@@ -6,11 +6,18 @@ package xdr
66
77import "io"
88
9+ // Unmarshaller is a thin wrapper around a byte buffer. The Unmarshal... methods
10+ // don't individually return an error - the intention is that multiple fields are
11+ // unmarshalled in rapid succession, followed by a check of the Error field on
12+ // the Unmarshaller.
913type Unmarshaller struct {
1014 Error error
1115 Data []byte
1216}
1317
18+ // UnmarshalRaw returns a byte slice of length l from the buffer,
19+ // without a size prefix or padding. This is suitable for retrieving
20+ // data already in XDR format.
1421func (u * Unmarshaller ) UnmarshalRaw (l int ) []byte {
1522 if u .Error != nil {
1623 return nil
@@ -26,10 +33,12 @@ func (u *Unmarshaller) UnmarshalRaw(l int) []byte {
2633 return v
2734}
2835
36+ // UnmarshalString returns a string from the buffer.
2937func (u * Unmarshaller ) UnmarshalString () string {
3038 return u .UnmarshalStringMax (0 )
3139}
3240
41+ // UnmarshalStringMax returns a string up to a max length from the buffer.
3342func (u * Unmarshaller ) UnmarshalStringMax (max int ) string {
3443 buf := u .UnmarshalBytesMax (max )
3544 if len (buf ) == 0 || u .Error != nil {
@@ -39,10 +48,12 @@ func (u *Unmarshaller) UnmarshalStringMax(max int) string {
3948 return string (buf )
4049}
4150
51+ // UnmarshalBytes returns a byte slice from the buffer.
4252func (u * Unmarshaller ) UnmarshalBytes () []byte {
4353 return u .UnmarshalBytesMax (0 )
4454}
4555
56+ // UnmarshalBytesMax returns a byte slice up to a max length from the buffer.
4657func (u * Unmarshaller ) UnmarshalBytesMax (max int ) []byte {
4758 if u .Error != nil {
4859 return nil
@@ -73,10 +84,12 @@ func (u *Unmarshaller) UnmarshalBytesMax(max int) []byte {
7384 return v
7485}
7586
87+ // UnmarshalBool returns a bool from the buffer.
7688func (u * Unmarshaller ) UnmarshalBool () bool {
7789 return u .UnmarshalUint8 () != 0
7890}
7991
92+ // UnmarshalUint8 returns a uint8 from the buffer.
8093func (u * Unmarshaller ) UnmarshalUint8 () uint8 {
8194 if u .Error != nil {
8295 return 0
@@ -92,6 +105,7 @@ func (u *Unmarshaller) UnmarshalUint8() uint8 {
92105 return v
93106}
94107
108+ // UnmarshalUint16 returns a uint16 from the buffer.
95109func (u * Unmarshaller ) UnmarshalUint16 () uint16 {
96110 if u .Error != nil {
97111 return 0
@@ -107,6 +121,7 @@ func (u *Unmarshaller) UnmarshalUint16() uint16 {
107121 return v
108122}
109123
124+ // UnmarshalUint32 returns a uint32 from the buffer.
110125func (u * Unmarshaller ) UnmarshalUint32 () uint32 {
111126 if u .Error != nil {
112127 return 0
@@ -122,6 +137,7 @@ func (u *Unmarshaller) UnmarshalUint32() uint32 {
122137 return v
123138}
124139
140+ // UnmarshalUint64 returns a uint64 from the buffer.
125141func (u * Unmarshaller ) UnmarshalUint64 () uint64 {
126142 if u .Error != nil {
127143 return 0
0 commit comments