Added cursor-{set, set-range, delete, put} API calls.
Bug fix to b-tree-cursor-value, exists-p was true even if B-tree was empty.
Cursor still does not work properly with non-unique B-trees.
Bug fix to cursor-first. Did not descend to child nodes to find min value.
Added cursor-prev and cursor-prev-p API functions.
Contains initial cursor implementation. API has currently following functions b-tree:cursor-{open, first, next-p, next, peek}. Cursor does not work with non-unique B-trees as expected right now. Cursor does not iterate over multiple values associated with the key.
Added :unique option to b-tree:open/create, if t
(default) creates unique B-tree and if false non-unique. Unique B-tree
replaces old value with new. Non-unique stores values as a list, newest
value is first in a list.
New features:
* b-tree:map has :from and :to keyword parameters to set lower (inclusive) and upper (exclusive) bounds,
* b-tree:search>= finds item greater or equal than given key.
Known issues:
* B-tree is not unique, key may have several values but the b-tree:search returns only one value. Thanks for Tzaddi for finding the bug!
Contains fix delete operation.
Added simple performance tester and B-tree validator.
asdf-install installable release. cl-btree depends on cl-unit-test which must be installed first. In SBCL cl-btree can be installed with following commands:
(require 'asdf-install)
(asdf-install:install 'cl-unit-test)
(asdf-install:install 'cl-btree-0.3)
The cl-btree-0.2.tgz package contained dependencies package which is removed from the release. Please checkout those dependencies from
the SourceForge subversion or download packages separately as well.
This is a complete implementation of disk based B-Tree data structure and has high code coverage with unit tests.