Organization of Indexes
Getting Iterators from Indexes and Index Repositories
The logic for getting iterators from indexes accommodates various optimizations including:
- avoiding the management of multiple subiterators if this index has no sub indexes
- for indexes having subiterators:
- choosing sorted or non-sorted management of subiterators
- doing a 1-time conversion to a "flat index" for snapshots (supporting sorted, set, and bag)
Organization of Streams over Indexes
The top level interface FSIndexes implements Iterable, which in turn has a default impl for SplitIterator, which enables creation of streams.
FSIndexes has two default methods for stream and parallel stream, constructed from the splititerator impls.
Splititerator impls are defined in these classes:
- FSSubtypesIndexImpl
- FSBagIndex
- FSSetIndex
- FSSortedIndex
Organization of Iterators over Indexes
Class rename tables
Indexes
v3 name | v2 name |
---|---|
FSIndex_subtypes | IndexImpl (in FSIndexRepo) |
FSIndex_iicp | IndexIteratorCachePair (in FSIndexRepo) |
FsIndex_singletype | FSLeafIndexImpl |
FsIndex_bag | FSBagIndex |
FsIndex_set | FSRBTSetIndex |
FsIndex_sorted | FSIntArrayIndex |
FsIndex_flat |
Iterators
v3 name | v2 name |
---|---|
FsIterator_singletype | |
FsIterator_subtypes | |
FsIterator_subtypes_snapshot | SnapshotPointerIterator |
FsIterator_bag | PointerIterator in FSBagIndex |
FsIterator_set | PointerIterator in FSRBTSetIndex |
FsIterator_sorted | PointerIterator in FSIntArrayIndex |
FsIterator_subtypes_list | |
FsIterator_subtypes_ordered | PointerIteratorOrdered |
FsIterator_subtypes_unordered | PointerIteratorUnordered |