diff options
author | 2013-03-10 22:39:15 -0700 | |
---|---|---|
committer | 2013-03-10 22:39:15 -0700 | |
commit | 8c92ac7a4b67d4ebb4dd177cf70aef73278d2baa (patch) | |
tree | 8f410ca690418cb89c2bbc84e74cffa67a504235 /src/core/basetypes/MCIndexSet.h | |
parent | 3288fbac4090ecf5ea490ba72e5c3c01a4233e21 (diff) |
now uses IndexSet for message uids and numbers
Diffstat (limited to 'src/core/basetypes/MCIndexSet.h')
-rw-r--r-- | src/core/basetypes/MCIndexSet.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/core/basetypes/MCIndexSet.h b/src/core/basetypes/MCIndexSet.h index 290b9aaa..3d9bdb6c 100644 --- a/src/core/basetypes/MCIndexSet.h +++ b/src/core/basetypes/MCIndexSet.h @@ -23,13 +23,20 @@ namespace mailcore { IndexSet(IndexSet * o); static IndexSet * indexSet(); + static IndexSet * indexSetWithRange(Range range); + static IndexSet * indexSetWithIndex(uint64_t idx); virtual unsigned int count(); virtual void addIndex(uint64_t idx); virtual void removeIndex(uint64_t idx); virtual bool containsIndex(uint64_t idx); - + + virtual void addRange(Range range); + virtual void removeRange(Range range); + virtual void intersectsRange(Range range); + virtual Range * allRanges(); + virtual unsigned int rangesCount(); virtual void removeAllIndexes(); public: // subclass behavior @@ -45,9 +52,13 @@ namespace mailcore { int rangeIndexForIndex(uint64_t idx); int rangeIndexForIndexWithBounds(uint64_t idx, unsigned int left, unsigned int right); void addRangeIndex(unsigned int rangeIndex); - void removeRangeIndex(unsigned int rangeIndex); + void removeRangeIndex(unsigned int rangeIndex, unsigned int count); int rightRangeIndexForIndex(uint64_t idx); int rightRangeIndexForIndexWithBounds(uint64_t idx, unsigned int left, unsigned int right); + int leftRangeIndexForIndex(uint64_t idx); + int leftRangeIndexForIndexWithBounds(uint64_t idx, unsigned int left, unsigned int right); + void mergeRanges(unsigned int rangeIndex); + void tryToMergeAdjacentRanges(unsigned int rangeIndex); }; } |