From 5b6b9c15c24f04e2c9423cfb29d99a569303fb26 Mon Sep 17 00:00:00 2001
From: whh8b <whh8b@git.zephyr-software.com>
Date: Mon, 9 Nov 2015 00:05:37 +0000
Subject: [PATCH] Return a range of instructions

When the memory space is asked for nearby ranges,
it should return a range.
---
 include/zipr_mem_space.h |  3 ++-
 src/memory_space.cpp     | 12 +++++-------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/include/zipr_mem_space.h b/include/zipr_mem_space.h
index 18a7827..8706d63 100644
--- a/include/zipr_mem_space.h
+++ b/include/zipr_mem_space.h
@@ -46,7 +46,8 @@ class ZiprMemorySpace_t : public MemorySpace_t
 		void MergeFreeRange(RangeAddress_t addr);
 		RangeSet_t::iterator FindFreeRange(RangeAddress_t addr);
 		Range_t GetFreeRange(int size);
-		Range_t GetNearbyFreeRange(const RangeAddress_t hint);
+		std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator>
+			GetNearbyFreeRanges(const RangeAddress_t hint, size_t count = 0);
 		void AddFreeRange(Range_t newRange);
 		void RemoveFreeRange(Range_t newRange);
 
diff --git a/src/memory_space.cpp b/src/memory_space.cpp
index 3932ff6..f8ed446 100644
--- a/src/memory_space.cpp
+++ b/src/memory_space.cpp
@@ -161,18 +161,16 @@ bool ZiprMemorySpace_t::IsValidRange(RangeSet_t::iterator it)
 	return it!=free_ranges.end();
 }
 
-Range_t ZiprMemorySpace_t::GetNearbyFreeRange(const RangeAddress_t hint)
+std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator>
+	ZiprMemorySpace_t::GetNearbyFreeRanges(const RangeAddress_t hint,size_t count)
 {
-	RangeSet_t::iterator result;
 	Range_t search(hint, hint+1);
+	RangeSet_t::const_iterator result = free_ranges.upper_bound(search);
 	/*
 	 * TODO: Not quite sure what to make of this.
 	 */
-	if (free_ranges.end() == (result = free_ranges.upper_bound(search))) {
-		cout << "Oops: GetNearbyFreeRange() is BAD" << endl;
-		return Range_t(0,0);
-	}
-	return *result;
+	return std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator>(
+		result, free_ranges.end());
 }
 
 Range_t ZiprMemorySpace_t::GetFreeRange(int size)
-- 
GitLab