map: remove temporary fields _keys, key_i
parent
7957ec3186
commit
ea30ba4555
|
@ -9,8 +9,6 @@ import strings
|
||||||
struct map {
|
struct map {
|
||||||
element_size int
|
element_size int
|
||||||
root *Node
|
root *Node
|
||||||
_keys []string // used by `keys()` TODO remove this from map struct,
|
|
||||||
key_i int // store in a separate var
|
|
||||||
pub:
|
pub:
|
||||||
size int
|
size int
|
||||||
}
|
}
|
||||||
|
@ -154,27 +152,29 @@ fn (m map) bs(query string, start, end int, out voidptr) {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fn (m mut map) preorder_keys(node &Node) {
|
fn preorder_keys(node &Node, keys mut []string, key_i int) int {
|
||||||
|
mut i := key_i
|
||||||
if !node.is_empty {
|
if !node.is_empty {
|
||||||
m._keys[m.key_i] = node.key
|
mut a := *keys
|
||||||
m.key_i++
|
a[i] = node.key
|
||||||
|
i++
|
||||||
}
|
}
|
||||||
if !isnil(node.left) {
|
if !isnil(node.left) {
|
||||||
m.preorder_keys(node.left)
|
i = preorder_keys(node.left, mut keys, i)
|
||||||
}
|
}
|
||||||
if !isnil(node.right) {
|
if !isnil(node.right) {
|
||||||
m.preorder_keys(node.right)
|
i = preorder_keys(node.right, mut keys, i)
|
||||||
}
|
}
|
||||||
|
return i
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (m mut map) keys() []string {
|
pub fn (m mut map) keys() []string {
|
||||||
m._keys = [''; m.size]
|
mut keys := [''; m.size]
|
||||||
m.key_i = 0
|
|
||||||
if isnil(m.root) {
|
if isnil(m.root) {
|
||||||
return m._keys
|
return keys
|
||||||
}
|
}
|
||||||
m.preorder_keys(m.root)
|
preorder_keys(m.root, mut keys, 0)
|
||||||
return m._keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (m map) get(key string, out voidptr) bool {
|
fn (m map) get(key string, out voidptr) bool {
|
||||||
|
|
Loading…
Reference in New Issue