== List of Requirments == Go here for the actual implemented info
Taken from a chat log transcript between Avi and myself
you'd have:
- one BTree per index
- you'd have an IndexManager that would know, for each class,
- which selectors to index based on
- it would keep a BTree for each of these class/selector pairs
when you give it an object, it would do something like
(self btreeFor: selectorClassPair) at: (object perform: selector) put: object
for each that applied.
The API could be something like
indexMgr for: CareGiver index: #login
and
indexMgr find: CareGiver where: #login is: 'foo'
and
indexMgr add: aCareGiver
the somewhat trickier one would be #update: when you want it to adjust based on a modified object you'd have to remove and add again
oh, actually, you don't want
at: (object perform: selector) put: object
you want to have a Set there and add the object to it so you can have multiple values
