package ipp import ( "fmt" ) type enum struct { name string values []int32 } func NewEnum(name string, values ...int32) *enum { e := new(enum) e.name = name e.values = values return e } func (e enum) Name() string { return e.name } func (e enum) String() string { return e.name + ":" + fmt.Sprint(e.values) } func (e *enum) valueTag() tag { return enumValueTag } func (e *enum) size() int { return 9 + len(e.name) } func (e *enum) addValue(v interface{}) { e.values = append(e.values, v.(int32)) } func (e *enum) marshal() []byte { return marshalInteger(enumValueTag, e.name, e.values) }