28 lines
912 B
Go
28 lines
912 B
Go
package pncdsl
|
|
|
|
type State struct {
|
|
flags map[string]bool
|
|
vars map[string]any
|
|
visited map[string]int
|
|
talked map[string]int
|
|
}
|
|
|
|
func NewState() *State {
|
|
return &State{
|
|
flags: make(map[string]bool),
|
|
vars: make(map[string]any),
|
|
visited: make(map[string]int),
|
|
talked: make(map[string]int),
|
|
}
|
|
}
|
|
|
|
func (s *State) Flag(name string) bool { return s.flags[name] }
|
|
func (s *State) SetFlag(name string) { s.flags[name] = true }
|
|
func (s *State) ClearFlag(name string) { delete(s.flags, name) }
|
|
func (s *State) Var(name string) any { return s.vars[name] }
|
|
func (s *State) SetVar(name string, v any) { s.vars[name] = v }
|
|
func (s *State) Visited(name string) int { return s.visited[name] }
|
|
func (s *State) NoteVisit(name string) { s.visited[name]++ }
|
|
func (s *State) Talked(node string) int { return s.talked[node] }
|
|
func (s *State) NoteTalked(node string) { s.talked[node]++ }
|