49 lines
833 B
Go
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
|
|
}
|