320 lines
9.5 KiB
Go
320 lines
9.5 KiB
Go
|
// ************************************************************
|
||
|
// This file is automatically generated by genxdr. Do not edit.
|
||
|
// ************************************************************
|
||
|
|
||
|
package xdr_test
|
||
|
|
||
|
import (
|
||
|
"github.com/calmh/xdr"
|
||
|
)
|
||
|
|
||
|
/*
|
||
|
|
||
|
TestStruct Structure:
|
||
|
|
||
|
0 1 2 3
|
||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| B (V=0 or 1) |V|
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ int Structure \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| 24 zero bits | I8 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| 24 zero bits | UI8 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| 16 zero bits | I16 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| 16 zero bits | UI16 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| I32 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| UI32 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| |
|
||
|
+ I64 (64 bits) +
|
||
|
| |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| |
|
||
|
+ UI64 (64 bits) +
|
||
|
| |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ BS (length + padded data) \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ S (length + padded data) \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ Opaque Structure \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| Number of SS |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
/ /
|
||
|
\ SS (length + padded data) \
|
||
|
/ /
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ EmptyStruct Structure \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ OtherStruct Structure \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| Number of OSs |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ Zero or more OtherStruct Structures \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
|
||
|
|
||
|
struct TestStruct {
|
||
|
bool B;
|
||
|
int I;
|
||
|
int I8;
|
||
|
unsigned int UI8;
|
||
|
int I16;
|
||
|
unsigned int UI16;
|
||
|
int I32;
|
||
|
unsigned int UI32;
|
||
|
hyper I64;
|
||
|
unsigned hyper UI64;
|
||
|
opaque BS<1024>;
|
||
|
string S<1024>;
|
||
|
Opaque C;
|
||
|
string SS<1024>;
|
||
|
EmptyStruct ES;
|
||
|
OtherStruct OS;
|
||
|
OtherStruct OSs<>;
|
||
|
}
|
||
|
|
||
|
*/
|
||
|
|
||
|
func (o TestStruct) XDRSize() int {
|
||
|
return 4 + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 8 + 8 +
|
||
|
4 + len(o.BS) + xdr.Padding(len(o.BS)) +
|
||
|
4 + len(o.S) + xdr.Padding(len(o.S)) +
|
||
|
o.C.XDRSize() +
|
||
|
4 + xdr.SizeOfSlice(o.SS) +
|
||
|
o.ES.XDRSize() +
|
||
|
o.OS.XDRSize() +
|
||
|
4 + xdr.SizeOfSlice(o.OSs)
|
||
|
}
|
||
|
|
||
|
func (o TestStruct) MarshalXDR() ([]byte, error) {
|
||
|
buf := make([]byte, o.XDRSize())
|
||
|
m := &xdr.Marshaller{Data: buf}
|
||
|
return buf, o.MarshalXDRInto(m)
|
||
|
}
|
||
|
|
||
|
func (o TestStruct) MustMarshalXDR() []byte {
|
||
|
bs, err := o.MarshalXDR()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return bs
|
||
|
}
|
||
|
|
||
|
func (o TestStruct) MarshalXDRInto(m *xdr.Marshaller) error {
|
||
|
m.MarshalBool(o.B)
|
||
|
m.MarshalUint64(uint64(o.I))
|
||
|
m.MarshalUint8(uint8(o.I8))
|
||
|
m.MarshalUint8(o.UI8)
|
||
|
m.MarshalUint16(uint16(o.I16))
|
||
|
m.MarshalUint16(o.UI16)
|
||
|
m.MarshalUint32(uint32(o.I32))
|
||
|
m.MarshalUint32(o.UI32)
|
||
|
m.MarshalUint64(uint64(o.I64))
|
||
|
m.MarshalUint64(o.UI64)
|
||
|
if l := len(o.BS); l > 1024 {
|
||
|
return xdr.ElementSizeExceeded("BS", l, 1024)
|
||
|
}
|
||
|
m.MarshalBytes(o.BS)
|
||
|
if l := len(o.S); l > 1024 {
|
||
|
return xdr.ElementSizeExceeded("S", l, 1024)
|
||
|
}
|
||
|
m.MarshalString(o.S)
|
||
|
if err := o.C.MarshalXDRInto(m); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
if l := len(o.SS); l > 1024 {
|
||
|
return xdr.ElementSizeExceeded("SS", l, 1024)
|
||
|
}
|
||
|
m.MarshalUint32(uint32(len(o.SS)))
|
||
|
for i := range o.SS {
|
||
|
m.MarshalString(o.SS[i])
|
||
|
}
|
||
|
if err := o.ES.MarshalXDRInto(m); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
if err := o.OS.MarshalXDRInto(m); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
m.MarshalUint32(uint32(len(o.OSs)))
|
||
|
for i := range o.OSs {
|
||
|
if err := o.OSs[i].MarshalXDRInto(m); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return m.Error
|
||
|
}
|
||
|
|
||
|
func (o *TestStruct) UnmarshalXDR(bs []byte) error {
|
||
|
u := &xdr.Unmarshaller{Data: bs}
|
||
|
return o.UnmarshalXDRFrom(u)
|
||
|
}
|
||
|
func (o *TestStruct) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
|
||
|
o.B = u.UnmarshalBool()
|
||
|
o.I = int(u.UnmarshalUint64())
|
||
|
o.I8 = int8(u.UnmarshalUint8())
|
||
|
o.UI8 = u.UnmarshalUint8()
|
||
|
o.I16 = int16(u.UnmarshalUint16())
|
||
|
o.UI16 = u.UnmarshalUint16()
|
||
|
o.I32 = int32(u.UnmarshalUint32())
|
||
|
o.UI32 = u.UnmarshalUint32()
|
||
|
o.I64 = int64(u.UnmarshalUint64())
|
||
|
o.UI64 = u.UnmarshalUint64()
|
||
|
o.BS = u.UnmarshalBytesMax(1024)
|
||
|
o.S = u.UnmarshalStringMax(1024)
|
||
|
(&o.C).UnmarshalXDRFrom(u)
|
||
|
_SSSize := int(u.UnmarshalUint32())
|
||
|
if _SSSize < 0 {
|
||
|
return xdr.ElementSizeExceeded("SS", _SSSize, 1024)
|
||
|
} else if _SSSize == 0 {
|
||
|
o.SS = nil
|
||
|
} else {
|
||
|
if _SSSize > 1024 {
|
||
|
return xdr.ElementSizeExceeded("SS", _SSSize, 1024)
|
||
|
}
|
||
|
if _SSSize <= len(o.SS) {
|
||
|
for i := _SSSize; i < len(o.SS); i++ {
|
||
|
o.SS[i] = ""
|
||
|
}
|
||
|
o.SS = o.SS[:_SSSize]
|
||
|
} else {
|
||
|
o.SS = make([]string, _SSSize)
|
||
|
}
|
||
|
for i := range o.SS {
|
||
|
o.SS[i] = u.UnmarshalString()
|
||
|
}
|
||
|
}
|
||
|
(&o.ES).UnmarshalXDRFrom(u)
|
||
|
(&o.OS).UnmarshalXDRFrom(u)
|
||
|
_OSsSize := int(u.UnmarshalUint32())
|
||
|
if _OSsSize < 0 {
|
||
|
return xdr.ElementSizeExceeded("OSs", _OSsSize, 0)
|
||
|
} else if _OSsSize == 0 {
|
||
|
o.OSs = nil
|
||
|
} else {
|
||
|
if _OSsSize <= len(o.OSs) {
|
||
|
o.OSs = o.OSs[:_OSsSize]
|
||
|
} else {
|
||
|
o.OSs = make([]OtherStruct, _OSsSize)
|
||
|
}
|
||
|
for i := range o.OSs {
|
||
|
(&o.OSs[i]).UnmarshalXDRFrom(u)
|
||
|
}
|
||
|
}
|
||
|
return u.Error
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
|
||
|
EmptyStruct Structure:
|
||
|
(contains no fields)
|
||
|
|
||
|
|
||
|
struct EmptyStruct {
|
||
|
}
|
||
|
|
||
|
*/
|
||
|
|
||
|
func (o EmptyStruct) XDRSize() int {
|
||
|
return 0
|
||
|
}
|
||
|
func (o EmptyStruct) MarshalXDR() ([]byte, error) {
|
||
|
return nil, nil
|
||
|
}
|
||
|
|
||
|
func (o EmptyStruct) MustMarshalXDR() []byte {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (o EmptyStruct) MarshalXDRInto(m *xdr.Marshaller) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (o *EmptyStruct) UnmarshalXDR(bs []byte) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (o *EmptyStruct) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
|
||
|
OtherStruct Structure:
|
||
|
|
||
|
0 1 2 3
|
||
|
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
| F1 |
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
/ /
|
||
|
\ F2 (length + padded data) \
|
||
|
/ /
|
||
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||
|
|
||
|
|
||
|
struct OtherStruct {
|
||
|
unsigned int F1;
|
||
|
string F2<>;
|
||
|
}
|
||
|
|
||
|
*/
|
||
|
|
||
|
func (o OtherStruct) XDRSize() int {
|
||
|
return 4 +
|
||
|
4 + len(o.F2) + xdr.Padding(len(o.F2))
|
||
|
}
|
||
|
|
||
|
func (o OtherStruct) MarshalXDR() ([]byte, error) {
|
||
|
buf := make([]byte, o.XDRSize())
|
||
|
m := &xdr.Marshaller{Data: buf}
|
||
|
return buf, o.MarshalXDRInto(m)
|
||
|
}
|
||
|
|
||
|
func (o OtherStruct) MustMarshalXDR() []byte {
|
||
|
bs, err := o.MarshalXDR()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return bs
|
||
|
}
|
||
|
|
||
|
func (o OtherStruct) MarshalXDRInto(m *xdr.Marshaller) error {
|
||
|
m.MarshalUint32(o.F1)
|
||
|
m.MarshalString(o.F2)
|
||
|
return m.Error
|
||
|
}
|
||
|
|
||
|
func (o *OtherStruct) UnmarshalXDR(bs []byte) error {
|
||
|
u := &xdr.Unmarshaller{Data: bs}
|
||
|
return o.UnmarshalXDRFrom(u)
|
||
|
}
|
||
|
func (o *OtherStruct) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
|
||
|
o.F1 = u.UnmarshalUint32()
|
||
|
o.F2 = u.UnmarshalString()
|
||
|
return u.Error
|
||
|
}
|