You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
744 B
Go
27 lines
744 B
Go
package main
|
|
|
|
import "slices"
|
|
|
|
type stateContents []int // Represents the contents of the current state - character classes can have multiple contents, which is why it is represented as a slice
|
|
|
|
func newContents(data ...int) stateContents {
|
|
toReturn := stateContents{}
|
|
for _, i := range data {
|
|
toReturn = append(toReturn, i)
|
|
}
|
|
return toReturn
|
|
}
|
|
|
|
func rune2Contents(data []rune) stateContents { // Convert a rune slice into a stateContents type, then return it. The runes are simply cast to ints.
|
|
toReturn := newContents()
|
|
for _, r := range data {
|
|
toReturn = append(toReturn, int(r))
|
|
}
|
|
return toReturn
|
|
}
|
|
|
|
// Returns true if c contains the given value
|
|
func (c stateContents) contains(val int) bool {
|
|
return slices.Contains(c, val)
|
|
}
|