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 //////////////////////////////////////////////////////////////////////
16 #include "tiny_xdr.hxx"
18 /* XDR 8bit integers */
20 XDR_encode_int8 ( const int8_t & n_Val )
22 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
26 XDR_encode_uint8 ( const uint8_t & n_Val )
28 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
32 XDR_decode_int8 ( const xdr_data_t & n_Val )
34 return (static_cast<int8_t> (SWAP32(n_Val)));
38 XDR_decode_uint8 ( const xdr_data_t & n_Val )
40 return (static_cast<uint8_t> (SWAP32(n_Val)));
43 /* XDR 16bit integers */
45 XDR_encode_int16 ( const int16_t & n_Val )
47 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
51 XDR_encode_uint16 ( const uint16_t & n_Val )
53 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
57 XDR_decode_int16 ( const xdr_data_t & n_Val )
59 return (static_cast<int16_t> (SWAP32(n_Val)));
63 XDR_decode_uint16 ( const xdr_data_t & n_Val )
65 return (static_cast<uint16_t> (SWAP32(n_Val)));
69 /* XDR 32bit integers */
71 XDR_encode_int32 ( const int32_t & n_Val )
73 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
77 XDR_encode_uint32 ( const uint32_t & n_Val )
79 return (SWAP32(static_cast<xdr_data_t> (n_Val)));
83 XDR_decode_int32 ( const xdr_data_t & n_Val )
85 return (static_cast<int32_t> (SWAP32(n_Val)));
89 XDR_decode_uint32 ( const xdr_data_t & n_Val )
91 return (static_cast<uint32_t> (SWAP32(n_Val)));
95 /* XDR 64bit integers */
97 XDR_encode_int64 ( const int64_t & n_Val )
99 return (SWAP64(static_cast<xdr_data2_t> (n_Val)));
103 XDR_encode_uint64 ( const uint64_t & n_Val )
105 return (SWAP64(static_cast<xdr_data2_t> (n_Val)));
109 XDR_decode_int64 ( const xdr_data2_t & n_Val )
111 return (static_cast<int64_t> (SWAP64(n_Val)));
115 XDR_decode_uint64 ( const xdr_data2_t & n_Val )
117 return (static_cast<uint64_t> (SWAP64(n_Val)));
123 XDR_encode_float ( const float & f_Val )
127 tmp = (xdr_data_t*) &f_Val;
128 return (XDR_encode_int32 (*tmp));
132 XDR_decode_float ( const xdr_data_t & f_Val )
137 dummy = XDR_decode_int32 (f_Val);
138 tmp = (float*) &dummy;
144 XDR_encode_double ( const double & d_Val )
148 tmp = (xdr_data2_t*) &d_Val;
149 return (XDR_encode_int64 (*tmp));
153 XDR_decode_double ( const xdr_data2_t & d_Val )
158 dummy = XDR_decode_int64 (d_Val);
159 tmp = (double*) &dummy;