// Copyright 2021, Henrik Sölver henrik.solver@gmail.com // SPDX-License-Identifier: BSD-3-Clause 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) }