== 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