MCPcopy
hub / github.com/openacid/slim / String

Method String

trie/slimtrie_str.go:30–65  ·  view source on GitHub ↗

String implements proto.Message and output human readable multiline representation. A node is in form of -> + * = E.g.: 000->#000+4*3 001->#001+4*2 003->#004+8=0 006->#007+4=1 004->#005+1=2 006->#008+4=3 002->#002+4=4 006->#006+4=5 006->#009+8=6 003->#

()

Source from the content-addressed store, hash-verified

28//
29// Since 0.4.3
30func (st *SlimTrie) String() string {
31
32 // empty SlimTrie
33 if st.inner.NodeTypeBM == nil {
34 return ""
35 }
36
37 s := &slimTrieStringly{
38 st: st,
39 inners: bitmap.ToArray(st.inner.NodeTypeBM.Words),
40 labels: make(map[int32]map[string]int32),
41 }
42
43 ch := st.inner
44 n := &querySession{}
45 emp := querySession{}
46
47 for _, nid := range s.inners {
48 *n = emp
49
50 s.labels[nid] = make(map[string]int32)
51
52 st.getNode(nid, n)
53
54 paths := st.getLabels(n)
55
56 leftChildId, _ := bitmap.Rank128(ch.Inners.Words, ch.Inners.RankIndex, n.from)
57
58 for i, l := range paths {
59 lstr := bmtree.PathStr(l)
60 s.labels[nid][lstr] = leftChildId + 1 + int32(i)
61 }
62 }
63
64 return tree.String(s)
65}
66
67// slimTrieStringly is a wrapper that implements tree.Tree .
68// It is a helper to convert SlimTrie to string.

Calls 2

getNodeMethod · 0.95
getLabelsMethod · 0.95