From b4edf15b40ba260d946b1ee8ea1d16265c3ce37c Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sun, 31 Dec 2023 14:15:10 -0800 Subject: [PATCH] Switch back to node pointers --- state/state.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/state/state.go b/state/state.go index 3d5c6a4..422d628 100644 --- a/state/state.go +++ b/state/state.go @@ -12,7 +12,7 @@ type node struct { } type State struct { - nodes [256]node + nodes []*node bySymbol map[byte]int } @@ -22,18 +22,28 @@ func NewState() *State { } for i := 0; i < 256; i++ { - st.nodes[i].symbol = byte(i) - st.bySymbol[byte(i)] = i + node := &node{ + symbol: byte(i), + } + + st.nodes = append(st.nodes, node) + st.bySymbol[node.symbol] = i } return st } func (st State) Clone() *State { - return &State{ - nodes: st.nodes, + st2 := &State{ bySymbol: maps.Clone(st.bySymbol), } + + for _, node := range st.nodes { + tmp := *node + st2.nodes = append(st2.nodes, &tmp) + } + + return st2 } // Returns old index