On Tuesday, January 22, 2013 7:18:08 AM UTC-6, Edward K. Ream wrote:
> The truly adventurous may want to set allow_cloned_sibs = True and see what happens :-) The new code passes all the hand tests I can think of, which may say more about my imagination than the quality of the code!
Despite these caveats, the new code is actually fairly simple. There are a lot of "if" statements involved, but they only select the proper read/write code given all the various flavors of nodes & versions that Leo must support. The heart of the new code are the methods at.new_createThinChild4 and at.createV5ThinNode. These methods have the minimal number of "if" statements: there can be no combinatorial explosion of complexity. This means that if the code works at all it should work everywhere. That is my hope, at any rate.
In fact, the two methods mentioned in the previous paragraph are almost the only changed methods in the read code, with the exception of refactoring in at.createNewThinNode. I took great pains to ensure that as little as possible changed. In particular, it was imperative that the at.changeLevel method did not change: it is used in two many read paths. Changing it significantly would likely have broken seldom-used legacy read code.
Edward
Edward