Fixed-Length leaf Key-only Node.
Immutable RawTree Key.
Immutable RawTree Key.
Mutable RawTree Key.
Mutable RawTree Key.
Fixed-Length RawTree Key.
Fixed-Length RawTree Key.
Mutable leaf node of 1-Ix leaves.
Results of attempt at modification sub.
Check correctness when span is span and for each Key in Keys.
Allocate (if pointer) and Construct a Node-type of value type NodeType using constructor arguments args of Args.
Print tree.
Instantiator for the map-version of RadixTree where value-type is Value.
Instantiator for the set-version of RadixTree where value-type is void (unused).
Calculate and print statistics of tree.
Check string types in Keys.
Remap fixed-length typed key typedKey to raw (untyped) key of type UKey. TODO: DIP-1000 scope
Remap typed key typedKey to raw (untyped) key of type UKey.
Remap raw untyped key ukey to typed key of type TypedKey.
Try to iterate leaf index ix to index, either sparse or dense and put result in nextIx.
Hepa/7-Key Leaf with key-length 1.
Single/1-Key Leaf with maximum key-length 7.
Radix-Tree with key of type K and value of type V (if non-void).
Ternary/3-Key Leaf with key-length 2.
Binary/2-Key Leaf with key-length 3.
Keys are stored in a way that they can't be accessed by reference so we allow array (and string) keys to be of mutable type.
Adaptive radix tree (ART) container storing untyped (raw) keys.
Static Iota.
for a descriptive usage of prefixed access.
TODO: split up file into raw_trie.d, trie.d
TODO: use fast bit-scanning functions in core.bitop for DenseBranch and DenseLeaf iterators
TODO: shift addresses of class and pointers by its alignment before adding them to make top-branch as dense possible
TODO: Allow slicing from non-mutable tries and add test-case at line 5300
TODO: 2. Make as many members as possible free functionss free-functions to reduce compilation times. Alternative make them templates (template-lazy )
TODO: Use scope on Range, RawRange and members that return key and value reference when DIP-1000 has been implemented
TODO: Encode string with zero-terminating 0 byte when it's not the last member in a key aggregate
TODO
Replace case undefined: return typeof(return).init; // terminate recursion with case undefined: return curr;
TODO: TODO: Make Key and Ix[]-array of immutable Ix like string
TODO: Allow Node-constructors to take const and immutable prefixes and then make toRawKey and toTypedKey accept return const-slices
TODO: Remove @trusted from VLA (variable length array)-members of SparseBranch/SparseLeaf and make their callers @trusted instead.
TODO: Assure that ~this() is run for argument nt in freeNode. Can we use postblit() for this?
TODO: Search for "functionize this loop or reuse memmove" and use move()
TODO: Add Branch-hint allocation flag and re-benchmark construction of radixTreeSet with 10000000 uints
TODO: Add sortedness to IxsN and make IxsN.contains() use binarySearch(). Make use of sortn.
TODO: Check for case when expanding to bit-branch instead of SparseBranch in all expand() overloads
TODO: Make array indexing/slicing as @trusted and use .ptr[] instead of [] when things are stable.
TODO: Add various extra packings in MixLeaf1to4: number of - Ix (0,1,2,3,4,5,6): 3-bits - Ix2 (0,1,2,3): 2-bits - Ix3 (0,1,2): 2-bits - Ix4 (0,1): 1-bit Total bits 8-bits Possible packings with 6 bytes - 4_ - 4_2 - 4_2 - 4_2_1 - 4_1 - 4_1_1 - 3_2 - 3_2_1 - 3_1 - 3_1_1 - 3_1_1_1 - 2_2_2 - 2_2 - 2_2_1 - 2_2_1_1 - 2 - 2_1 - 2_1_1 - 2_1_1_1 - 2_1_1_1_1 - 1 - 1_1 - 1_1_1 - 1_1_1_1 - 1_1_1_1_1 - 1_1_1_1_1_1
TODO: Sorted Range Primitives over Keys
- Returns a range of elements which are equivalent (though not necessarily equal) to value. auto equalRange(this This)(inout T value)
- Returns a range of elements which are greater than low and smaller than highValue. auto bound(this This)(inout T lowValue, inout T highValue)
- Returns a range of elements which are less than value. auto lowerBound(this This)(inout T value)
- Returns a range of elements which are greater than value. auto upperBound(this This)(inout T value)
TODO: opBinaryRight shall return _rawTree.ElementRef instead of bool
TODO: Fix vla-allocations in constructVariableSizeNode according C11-recommendations. For reference set commit d2f1971dd570439da4198fa76603b53b072060f8 at https://github.com/emacs-mirror/emacs.git
Tries and Prefix Trees.
Implementation is layered:
Both layers currently support
Typed layer supports