Range.cpp 589 B

12345678910111213141516171819202122232425
  1. /*
  2. * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "Range.h"
  7. #include <AK/Vector.h>
  8. namespace UserspaceEmulator {
  9. Vector<Range, 2> Range::carve(const Range& taken) const
  10. {
  11. VERIFY((taken.size() % PAGE_SIZE) == 0);
  12. Vector<Range, 2> parts;
  13. if (taken == *this)
  14. return {};
  15. if (taken.base() > base())
  16. parts.append({ base(), taken.base().get() - base().get() });
  17. if (taken.end() < end())
  18. parts.append({ taken.end(), end().get() - taken.end().get() });
  19. return parts;
  20. }
  21. }