Files
ippserver/packages/ipp/enum.go
2021-11-27 15:47:03 +00:00

49 lines
833 B
Go

// Copyright 2021, Henrik Sölver henrik.solver@gmail.com
// SPDX-License-Identifier: BSD-3-Clause
package ipp
import (
"bufio"
"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) addValue(v interface{}) {
e.values = append(e.values, v.(int32))
}
func (e *Enum) marshal() []byte {
return marshalInteger(enumValueTag, e.name, e.values)
}
func (e *Enum) unmarshal(byteStream *bufio.Reader) {
soi, err := unmarshalIntegers(byteStream, integerValueTag)
if err != nil {
return
}
e.values = soi.values
}