package ipp import ( "encoding/binary" "fmt" "io" log "github.com/sirupsen/logrus" ) type IRange struct { lower int32 upper int32 } type rangeOfInteger struct { name string values []IRange } func NewRangeOfInteger(name string, values ...IRange) *rangeOfInteger { r := new(rangeOfInteger) r.name = name r.values = values return r } func (r *rangeOfInteger) Name() string { return r.name } func (r rangeOfInteger) String() string { return r.name + ":" + fmt.Sprint(r.values) } func (r *rangeOfInteger) valueTag() tag { return rangeOfIntegerValueTag } func (r *rangeOfInteger) marshal() []byte { log.Error("marshal rangeOfInteger is not implemented yet") return []byte{} } func (r *rangeOfInteger) addValue(v interface{}) { r.values = append(r.values, v.(IRange)) } func unmarshalSingleRangeOfInteger(byteStream io.Reader) (string, IRange) { name, data := unmarshalSingleAttribute(byteStream) var r IRange r.lower = int32(binary.BigEndian.Uint32(data[0:4])) r.upper = int32(binary.BigEndian.Uint32(data[4:8])) return name, r }