1 //////////////////////////////////////////////////////////////////////
3 // Tiny XDR implementation for flightgear
4 // written by Oliver Schroeder
5 // released to the public domain
7 // This implementation is not complete, but implements
10 // For further reading on XDR read RFC 1832.
12 //////////////////////////////////////////////////////////////////////
17 #include <plib/netSocket.h>
19 #include "tiny_xdr.hxx"
21 /* XDR 8bit integers */
23 XDR_encode_int8 ( const int8_t & n_Val )
25 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
29 XDR_encode_uint8 ( const uint8_t & n_Val )
31 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
35 XDR_decode_int8 ( const xdr_data_t & n_Val )
37 return (static_cast<int8_t> (SWAP32(n_Val)));
41 XDR_decode_uint8 ( const xdr_data_t & n_Val )
43 return (static_cast<uint8_t> (SWAP32(n_Val)));
46 /* XDR 16bit integers */
48 XDR_encode_int16 ( const int16_t & n_Val )
50 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
54 XDR_encode_uint16 ( const uint16_t & n_Val )
56 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
60 XDR_decode_int16 ( const xdr_data_t & n_Val )
62 return (static_cast<int16_t> (SWAP32(n_Val)));
66 XDR_decode_uint16 ( const xdr_data_t & n_Val )
68 return (static_cast<uint16_t> (SWAP32(n_Val)));
72 /* XDR 32bit integers */
74 XDR_encode_int32 ( const int32_t & n_Val )
76 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
80 XDR_encode_uint32 ( const uint32_t & n_Val )
82 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
86 XDR_decode_int32 ( const xdr_data_t & n_Val )
88 return (static_cast<int32_t> (SWAP32(n_Val)));
92 XDR_decode_uint32 ( const xdr_data_t & n_Val )
94 return (static_cast<uint32_t> (SWAP32(n_Val)));
98 /* XDR 64bit integers */
100 XDR_encode_int64 ( const int64_t & n_Val )
102 return (SWAP64(static_cast<xdr_data2_t> (n_Val)));
106 XDR_encode_uint64 ( const uint64_t & n_Val )
108 return (SWAP64(static_cast<xdr_data2_t> (n_Val)));
112 XDR_decode_int64 ( const xdr_data2_t & n_Val )
114 return (static_cast<int64_t> (SWAP64(n_Val)));
118 XDR_decode_uint64 ( const xdr_data2_t & n_Val )
120 return (static_cast<uint64_t> (SWAP64(n_Val)));
126 XDR_encode_float ( const float & f_Val )
134 return (XDR_encode_int32 (tmp.x));
138 XDR_decode_float ( const xdr_data_t & f_Val )
145 tmp.x = XDR_decode_int32 (f_Val);
151 XDR_encode_double ( const double & d_Val )
159 return (XDR_encode_int64 (tmp.x));
163 XDR_decode_double ( const xdr_data2_t & d_Val )
170 tmp.x = XDR_decode_int64 (d_Val);