diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2014-01-19 20:17:01 -0800 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2014-01-19 20:17:01 -0800 |
commit | a0b960cb74975d8bb71b1ccd9cede4207a7d57e3 (patch) | |
tree | 1b8918dbf68caecef50f7657c349497c9f2d4f1e /src | |
parent | 19019c91102037413b763381a907ba5fbb3a350b (diff) |
Added more indexSet helpers
Diffstat (limited to 'src')
-rw-r--r-- | src/core/basetypes/MCIndexSet.cc | 28 | ||||
-rw-r--r-- | src/core/basetypes/MCIndexSet.h | 4 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/core/basetypes/MCIndexSet.cc b/src/core/basetypes/MCIndexSet.cc index db25f5eb..fe755038 100644 --- a/src/core/basetypes/MCIndexSet.cc +++ b/src/core/basetypes/MCIndexSet.cc @@ -396,6 +396,34 @@ void IndexSet::importSerializable(HashMap * serializable) } } +void IndexSet::addIndexSet(IndexSet * indexSet) +{ + for(unsigned int i = 0 ; i < indexSet->count() ; i ++) { + addRange(indexSet->allRanges()[i]); + } +} + +void IndexSet::removeIndexSet(IndexSet * indexSet) +{ + for(unsigned int i = 0 ; i < indexSet->count() ; i ++) { + removeRange(indexSet->allRanges()[i]); + } +} + +void IndexSet::intersectsIndexSet(IndexSet * indexSet) +{ + IndexSet * result = new IndexSet(); + for(unsigned int i = 0 ; i < indexSet->count() ; i ++) { + IndexSet * rangeIntersect = (IndexSet *) copy(); + rangeIntersect->intersectsRange(indexSet->allRanges()[i]); + result->addIndexSet(rangeIntersect); + rangeIntersect->release(); + } + removeAllIndexes(); + addIndexSet(result); + result->release(); +} + static void * createObject() { return new IndexSet(); diff --git a/src/core/basetypes/MCIndexSet.h b/src/core/basetypes/MCIndexSet.h index b1605b90..57fcd538 100644 --- a/src/core/basetypes/MCIndexSet.h +++ b/src/core/basetypes/MCIndexSet.h @@ -36,6 +36,10 @@ namespace mailcore { virtual void removeRange(Range range); virtual void intersectsRange(Range range); + virtual void addIndexSet(IndexSet * indexSet); + virtual void removeIndexSet(IndexSet * indexSet); + virtual void intersectsIndexSet(IndexSet * indexSet); + virtual Range * allRanges(); virtual unsigned int rangesCount(); virtual void removeAllIndexes(); |