package ipp import ( "io" ) // URIValue represents a ipp URI value attribute type URIValue struct { name string value string } // NewURIValue creates a new URIValue attribute func NewURIValue(name, value string) *URIValue { u := new(URIValue) u.name = name u.value = value return u } // Name returns the name of the attribute func (u URIValue) Name() string { return u.name } // Value returns the value of the attribute func (u URIValue) Value() string { return u.value } func (u URIValue) String() string { return u.name + ":" + u.value } func (u *URIValue) valueTag() tag { return uriValueTag } func (u *URIValue) unmarshal(byteStream io.Reader) { u.name, u.value = unmarshalSingleValue(byteStream) } func (u *URIValue) marshal() []byte { res := make([]byte, u.size()) res[0] = byte(uriValueTag) marshalNameValue(u.name, u.value, res[1:]) return res } func (u *URIValue) size() int { l := 1 + 4 // The attribute tag + 2 lengths l += len(u.name) l += len(u.value) return l }