1/* 2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef TARGET_ADDRESS_RANGE_LIST_H 6#define TARGET_ADDRESS_RANGE_LIST_H 7 8 9#include <Array.h> 10#include <Referenceable.h> 11 12#include "TargetAddressRange.h" 13 14 15class TargetAddressRangeList : public BReferenceable { 16public: 17 TargetAddressRangeList(); 18 TargetAddressRangeList( 19 const TargetAddressRange& range); 20 TargetAddressRangeList( 21 const TargetAddressRangeList& other); 22 23 void Clear(); 24 bool AddRange(const TargetAddressRange& range); 25 inline bool AddRange(target_addr_t start, 26 target_size_t size); 27 28 int32 CountRanges() const; 29 TargetAddressRange RangeAt(int32 index) const; 30 31 target_addr_t LowestAddress() const; 32 TargetAddressRange CoveringRange() const; 33 34 bool Contains(target_addr_t address) const; 35 36 TargetAddressRangeList& operator=( 37 const TargetAddressRangeList& other); 38 39private: 40 typedef Array<TargetAddressRange> RangeArray; 41 42private: 43 RangeArray fRanges; 44}; 45 46 47bool 48TargetAddressRangeList::AddRange(target_addr_t start, target_size_t size) 49{ 50 return AddRange(TargetAddressRange(start, size)); 51} 52 53 54#endif // TARGET_ADDRESS_RANGE_LIST_H 55