42 lines
612 B
Go
42 lines
612 B
Go
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)
|
|
}
|