21 #ifndef ELM_STREE_SEGMENTBUILDER_H_
22 #define ELM_STREE_SEGMENTBUILDER_H_
24 #include <elm/stree/Builder.h>
25 #include <elm/avl/Map.h>
27 namespace elm {
namespace stree {
29 template <
class K,
class T,
class C = Comparator<K> >
35 } segment_comparator_t;
37 typedef typename map_t::PairIterator iter_t;
43 void add(
const K& low,
const K& high,
const T& val) {
56 K p = iter.item().fst.snd;
59 if(C::compare(iter.item().fst.fst, p) != 0)
61 p = iter.item().fst.snd;
73 nodes[i] =
node_t(iter.item().fst.fst, iter.item().fst.snd);
74 nodes[i++].
data = iter.item().snd;
75 K p = iter.item().fst.snd;
78 if(C::compare(iter.item().fst.fst, p) != 0) {
79 nodes[i] =
node_t(p, iter.item().fst.fst);
80 nodes[i++].
data = _def;
82 nodes[i] =
node_t(iter.item().fst.fst, iter.item().fst.snd);
83 nodes[i++].
data = iter.item().snd;
84 p = iter.item().fst.snd;
92 tree.
set(root, nodes);
void make(stree::Tree< K, T, C > &tree)
Definition: SegmentBuilder.h:47
void add(const K &low, const K &high, const T &val)
Definition: SegmentBuilder.h:43
node_t * allocate(t::uint32 n)
Definition: Builder.h:33
Pair< T1, T2 > pair(const T1 &v1, const T2 &v2)
Definition: Pair.h:41
SegmentBuilder(const T &def)
Definition: SegmentBuilder.h:41
T1 fst
Definition: Pair.h:18
int make(node_t *nodes, int &s, int start, int end)
Definition: Builder.h:38
Definition: SegmentBuilder.h:30
void put(const K &key, const T &value)
Definition: Map.h:110
void set(int _root, node_t *_nodes)
Definition: Tree.h:53
T data
Definition: Tree.h:48