Switch back to node pointers
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user