encdec_xdr_test.go 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  1. // ************************************************************
  2. // This file is automatically generated by genxdr. Do not edit.
  3. // ************************************************************
  4. package xdr_test
  5. import (
  6. "github.com/calmh/xdr"
  7. )
  8. /*
  9. TestStruct Structure:
  10. 0 1 2 3
  11. 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
  12. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  13. | B (V=0 or 1) |V|
  14. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  15. / /
  16. \ int Structure \
  17. / /
  18. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  19. | 24 zero bits | I8 |
  20. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  21. | 24 zero bits | UI8 |
  22. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  23. | 16 zero bits | I16 |
  24. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  25. | 16 zero bits | UI16 |
  26. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  27. | I32 |
  28. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  29. | UI32 |
  30. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  31. | |
  32. + I64 (64 bits) +
  33. | |
  34. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  35. | |
  36. + UI64 (64 bits) +
  37. | |
  38. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  39. / /
  40. \ BS (length + padded data) \
  41. / /
  42. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  43. / /
  44. \ S (length + padded data) \
  45. / /
  46. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  47. / /
  48. \ Opaque Structure \
  49. / /
  50. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  51. | Number of SS |
  52. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  53. / /
  54. / /
  55. \ SS (length + padded data) \
  56. / /
  57. / /
  58. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  59. / /
  60. \ EmptyStruct Structure \
  61. / /
  62. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  63. / /
  64. \ OtherStruct Structure \
  65. / /
  66. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  67. | Number of OSs |
  68. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  69. / /
  70. \ Zero or more OtherStruct Structures \
  71. / /
  72. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  73. struct TestStruct {
  74. bool B;
  75. int I;
  76. int I8;
  77. unsigned int UI8;
  78. int I16;
  79. unsigned int UI16;
  80. int I32;
  81. unsigned int UI32;
  82. hyper I64;
  83. unsigned hyper UI64;
  84. opaque BS<1024>;
  85. string S<1024>;
  86. Opaque C;
  87. string SS<1024>;
  88. EmptyStruct ES;
  89. OtherStruct OS;
  90. OtherStruct OSs<>;
  91. }
  92. */
  93. func (o TestStruct) XDRSize() int {
  94. return 4 + 8 + 4 + 4 + 4 + 4 + 4 + 4 + 8 + 8 +
  95. 4 + len(o.BS) + xdr.Padding(len(o.BS)) +
  96. 4 + len(o.S) + xdr.Padding(len(o.S)) +
  97. o.C.XDRSize() +
  98. 4 + xdr.SizeOfSlice(o.SS) +
  99. o.ES.XDRSize() +
  100. o.OS.XDRSize() +
  101. 4 + xdr.SizeOfSlice(o.OSs)
  102. }
  103. func (o TestStruct) MarshalXDR() ([]byte, error) {
  104. buf := make([]byte, o.XDRSize())
  105. m := &xdr.Marshaller{Data: buf}
  106. return buf, o.MarshalXDRInto(m)
  107. }
  108. func (o TestStruct) MustMarshalXDR() []byte {
  109. bs, err := o.MarshalXDR()
  110. if err != nil {
  111. panic(err)
  112. }
  113. return bs
  114. }
  115. func (o TestStruct) MarshalXDRInto(m *xdr.Marshaller) error {
  116. m.MarshalBool(o.B)
  117. m.MarshalUint64(uint64(o.I))
  118. m.MarshalUint8(uint8(o.I8))
  119. m.MarshalUint8(o.UI8)
  120. m.MarshalUint16(uint16(o.I16))
  121. m.MarshalUint16(o.UI16)
  122. m.MarshalUint32(uint32(o.I32))
  123. m.MarshalUint32(o.UI32)
  124. m.MarshalUint64(uint64(o.I64))
  125. m.MarshalUint64(o.UI64)
  126. if l := len(o.BS); l > 1024 {
  127. return xdr.ElementSizeExceeded("BS", l, 1024)
  128. }
  129. m.MarshalBytes(o.BS)
  130. if l := len(o.S); l > 1024 {
  131. return xdr.ElementSizeExceeded("S", l, 1024)
  132. }
  133. m.MarshalString(o.S)
  134. if err := o.C.MarshalXDRInto(m); err != nil {
  135. return err
  136. }
  137. if l := len(o.SS); l > 1024 {
  138. return xdr.ElementSizeExceeded("SS", l, 1024)
  139. }
  140. m.MarshalUint32(uint32(len(o.SS)))
  141. for i := range o.SS {
  142. m.MarshalString(o.SS[i])
  143. }
  144. if err := o.ES.MarshalXDRInto(m); err != nil {
  145. return err
  146. }
  147. if err := o.OS.MarshalXDRInto(m); err != nil {
  148. return err
  149. }
  150. m.MarshalUint32(uint32(len(o.OSs)))
  151. for i := range o.OSs {
  152. if err := o.OSs[i].MarshalXDRInto(m); err != nil {
  153. return err
  154. }
  155. }
  156. return m.Error
  157. }
  158. func (o *TestStruct) UnmarshalXDR(bs []byte) error {
  159. u := &xdr.Unmarshaller{Data: bs}
  160. return o.UnmarshalXDRFrom(u)
  161. }
  162. func (o *TestStruct) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
  163. o.B = u.UnmarshalBool()
  164. o.I = int(u.UnmarshalUint64())
  165. o.I8 = int8(u.UnmarshalUint8())
  166. o.UI8 = u.UnmarshalUint8()
  167. o.I16 = int16(u.UnmarshalUint16())
  168. o.UI16 = u.UnmarshalUint16()
  169. o.I32 = int32(u.UnmarshalUint32())
  170. o.UI32 = u.UnmarshalUint32()
  171. o.I64 = int64(u.UnmarshalUint64())
  172. o.UI64 = u.UnmarshalUint64()
  173. o.BS = u.UnmarshalBytesMax(1024)
  174. o.S = u.UnmarshalStringMax(1024)
  175. (&o.C).UnmarshalXDRFrom(u)
  176. _SSSize := int(u.UnmarshalUint32())
  177. if _SSSize < 0 {
  178. return xdr.ElementSizeExceeded("SS", _SSSize, 1024)
  179. } else if _SSSize == 0 {
  180. o.SS = nil
  181. } else {
  182. if _SSSize > 1024 {
  183. return xdr.ElementSizeExceeded("SS", _SSSize, 1024)
  184. }
  185. if _SSSize <= len(o.SS) {
  186. for i := _SSSize; i < len(o.SS); i++ {
  187. o.SS[i] = ""
  188. }
  189. o.SS = o.SS[:_SSSize]
  190. } else {
  191. o.SS = make([]string, _SSSize)
  192. }
  193. for i := range o.SS {
  194. o.SS[i] = u.UnmarshalString()
  195. }
  196. }
  197. (&o.ES).UnmarshalXDRFrom(u)
  198. (&o.OS).UnmarshalXDRFrom(u)
  199. _OSsSize := int(u.UnmarshalUint32())
  200. if _OSsSize < 0 {
  201. return xdr.ElementSizeExceeded("OSs", _OSsSize, 0)
  202. } else if _OSsSize == 0 {
  203. o.OSs = nil
  204. } else {
  205. if _OSsSize <= len(o.OSs) {
  206. o.OSs = o.OSs[:_OSsSize]
  207. } else {
  208. o.OSs = make([]OtherStruct, _OSsSize)
  209. }
  210. for i := range o.OSs {
  211. (&o.OSs[i]).UnmarshalXDRFrom(u)
  212. }
  213. }
  214. return u.Error
  215. }
  216. /*
  217. EmptyStruct Structure:
  218. (contains no fields)
  219. struct EmptyStruct {
  220. }
  221. */
  222. func (o EmptyStruct) XDRSize() int {
  223. return 0
  224. }
  225. func (o EmptyStruct) MarshalXDR() ([]byte, error) {
  226. return nil, nil
  227. }
  228. func (o EmptyStruct) MustMarshalXDR() []byte {
  229. return nil
  230. }
  231. func (o EmptyStruct) MarshalXDRInto(m *xdr.Marshaller) error {
  232. return nil
  233. }
  234. func (o *EmptyStruct) UnmarshalXDR(bs []byte) error {
  235. return nil
  236. }
  237. func (o *EmptyStruct) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
  238. return nil
  239. }
  240. /*
  241. OtherStruct Structure:
  242. 0 1 2 3
  243. 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
  244. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  245. | F1 |
  246. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  247. / /
  248. \ F2 (length + padded data) \
  249. / /
  250. +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  251. struct OtherStruct {
  252. unsigned int F1;
  253. string F2<>;
  254. }
  255. */
  256. func (o OtherStruct) XDRSize() int {
  257. return 4 +
  258. 4 + len(o.F2) + xdr.Padding(len(o.F2))
  259. }
  260. func (o OtherStruct) MarshalXDR() ([]byte, error) {
  261. buf := make([]byte, o.XDRSize())
  262. m := &xdr.Marshaller{Data: buf}
  263. return buf, o.MarshalXDRInto(m)
  264. }
  265. func (o OtherStruct) MustMarshalXDR() []byte {
  266. bs, err := o.MarshalXDR()
  267. if err != nil {
  268. panic(err)
  269. }
  270. return bs
  271. }
  272. func (o OtherStruct) MarshalXDRInto(m *xdr.Marshaller) error {
  273. m.MarshalUint32(o.F1)
  274. m.MarshalString(o.F2)
  275. return m.Error
  276. }
  277. func (o *OtherStruct) UnmarshalXDR(bs []byte) error {
  278. u := &xdr.Unmarshaller{Data: bs}
  279. return o.UnmarshalXDRFrom(u)
  280. }
  281. func (o *OtherStruct) UnmarshalXDRFrom(u *xdr.Unmarshaller) error {
  282. o.F1 = u.UnmarshalUint32()
  283. o.F2 = u.UnmarshalString()
  284. return u.Error
  285. }