// 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 }