aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCIndexSet.h
diff options
context:
space:
mode:
authorGravatar DINH Viet Hoa <dinh.viet.hoa@gmail.com>2013-03-10 22:39:15 -0700
committerGravatar DINH Viet Hoa <dinh.viet.hoa@gmail.com>2013-03-10 22:39:15 -0700
commit8c92ac7a4b67d4ebb4dd177cf70aef73278d2baa (patch)
tree8f410ca690418cb89c2bbc84e74cffa67a504235 /src/core/basetypes/MCIndexSet.h
parent3288fbac4090ecf5ea490ba72e5c3c01a4233e21 (diff)
now uses IndexSet for message uids and numbers
Diffstat (limited to 'src/core/basetypes/MCIndexSet.h')
-rw-r--r--src/core/basetypes/MCIndexSet.h15
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);
};
}