Switch back to node pointers

This commit is contained in:
Ian Gulliver
2023-12-31 14:15:10 -08:00
parent 8c9dab282b
commit b4edf15b40

View File

@@ -12,7 +12,7 @@ type node struct {
} }
type State struct { type State struct {
nodes [256]node nodes []*node
bySymbol map[byte]int bySymbol map[byte]int
} }
@@ -22,18 +22,28 @@ func NewState() *State {
} }
for i := 0; i < 256; i++ { for i := 0; i < 256; i++ {
st.nodes[i].symbol = byte(i) node := &node{
st.bySymbol[byte(i)] = i symbol: byte(i),
}
st.nodes = append(st.nodes, node)
st.bySymbol[node.symbol] = i
} }
return st return st
} }
func (st State) Clone() *State { func (st State) Clone() *State {
return &State{ st2 := &State{
nodes: st.nodes,
bySymbol: maps.Clone(st.bySymbol), bySymbol: maps.Clone(st.bySymbol),
} }
for _, node := range st.nodes {
tmp := *node
st2.nodes = append(st2.nodes, &tmp)
}
return st2
} }
// Returns old index // Returns old index