jet/qrm/type_stack.go

40 lines
556 B
Go

package qrm
import "reflect"
type typeStack []*reflect.Type
func newTypeStack() *typeStack {
stack := make(typeStack, 0, 20)
return &stack
}
func (s *typeStack) isEmpty() bool {
return len(*s) == 0
}
func (s *typeStack) push(t *reflect.Type) {
*s = append(*s, t)
}
func (s *typeStack) pop() bool {
if s.isEmpty() {
return false
}
*s = (*s)[:len(*s)-1]
return true
}
func (s *typeStack) contains(t *reflect.Type) bool {
if s.isEmpty() {
return false
}
for _, typ := range *s {
if *typ == *t {
return true
}
}
return false
}