Version 1 (modified by bacek, 5 years ago)

--

Idea of refactoring Key PMC

Current Keys are messy and incomprehensible. So there is idea of refactoring them into something more sane.

Keys currently serve only one purpose: navigate in nested containers. Iteration over containers was removed as part of key_revamp branch. To support this functionality more implicit and in clean way we will:

1. Add KeyItem interface class to represent single abstract step.

2. Implement StringKeyItem, IntegerKeyItem and PMCKeyItem to store concrete value for each step. Such FooKeyItem will implement get_foo vtable methods, freeze/thaw and nothing else. We don't need FloatKeyItem because float keys are meaningless.

3. Re-implement Key as:

  1. RPA for storing *KeyItem.
  1. Various push_foo vtables to create specific FooKeyItem and append it to path.