]> git.mxchange.org Git - flightgear.git/blob - src/MultiPlayer/tiny_xdr.cxx
Merge branch 'next' of 10.101.2.62:~/FlightGear/fg-osg/FlightGear into next
[flightgear.git] / src / MultiPlayer / tiny_xdr.cxx
1 //////////////////////////////////////////////////////////////////////
2 //
3 //      Tiny XDR implementation for flightgear
4 //      written by Oliver Schroeder
5 //      released to the public domain
6 //
7 //      This implementation is not complete, but implements
8 //      everything we need.
9 //
10 //      For further reading on XDR read RFC 1832.
11 //
12 //////////////////////////////////////////////////////////////////////
13
14 #include <string>
15
16 #include "tiny_xdr.hxx"
17
18 /* XDR 8bit integers */
19 xdr_data_t
20 XDR_encode_int8 ( const int8_t & n_Val )
21 {
22     return (SWAP32(static_cast<xdr_data_t> (n_Val)));
23 }
24
25 xdr_data_t
26 XDR_encode_uint8 ( const uint8_t & n_Val )
27 {
28     return (SWAP32(static_cast<xdr_data_t> (n_Val)));
29 }
30
31 int8_t
32 XDR_decode_int8 ( const xdr_data_t & n_Val )
33 {
34     return (static_cast<int8_t> (SWAP32(n_Val)));
35 }
36
37 uint8_t
38 XDR_decode_uint8 ( const xdr_data_t & n_Val )
39 {
40     return (static_cast<uint8_t> (SWAP32(n_Val)));
41 }
42
43 /* XDR 16bit integers */
44 xdr_data_t
45 XDR_encode_int16 ( const int16_t & n_Val )
46 {
47     return (SWAP32(static_cast<xdr_data_t> (n_Val)));
48 }
49
50 xdr_data_t
51 XDR_encode_uint16 ( const uint16_t & n_Val )
52 {
53     return (SWAP32(static_cast<xdr_data_t> (n_Val)));
54 }
55
56 int16_t
57 XDR_decode_int16 ( const xdr_data_t & n_Val )
58 {
59     return (static_cast<int16_t> (SWAP32(n_Val)));
60 }
61
62 uint16_t
63 XDR_decode_uint16 ( const xdr_data_t & n_Val )
64 {
65     return (static_cast<uint16_t> (SWAP32(n_Val)));
66 }
67
68
69 /* XDR 32bit integers */
70 xdr_data_t
71 XDR_encode_int32 ( const int32_t & n_Val )
72 {
73     return (SWAP32(static_cast<xdr_data_t> (n_Val)));
74 }
75
76 xdr_data_t
77 XDR_encode_uint32 ( const uint32_t & n_Val )
78 {
79     return (SWAP32(static_cast<xdr_data_t> (n_Val)));
80 }
81
82 int32_t
83 XDR_decode_int32 ( const xdr_data_t & n_Val )
84 {
85     return (static_cast<int32_t> (SWAP32(n_Val)));
86 }
87
88 uint32_t
89 XDR_decode_uint32 ( const xdr_data_t & n_Val )
90 {
91     return (static_cast<uint32_t> (SWAP32(n_Val)));
92 }
93
94
95 /* XDR 64bit integers */
96 xdr_data2_t
97 XDR_encode_int64 ( const int64_t & n_Val )
98 {
99     return (SWAP64(static_cast<xdr_data2_t> (n_Val)));
100 }
101
102 xdr_data2_t
103 XDR_encode_uint64 ( const uint64_t & n_Val )
104 {
105     return (SWAP64(static_cast<xdr_data2_t> (n_Val)));
106 }
107
108 int64_t
109 XDR_decode_int64 ( const xdr_data2_t & n_Val )
110 {
111     return (static_cast<int64_t> (SWAP64(n_Val)));
112 }
113
114 uint64_t
115 XDR_decode_uint64 ( const xdr_data2_t & n_Val )
116 {
117     return (static_cast<uint64_t> (SWAP64(n_Val)));
118 }
119
120
121 /* float */
122 xdr_data_t
123 XDR_encode_float ( const float & f_Val )
124 {
125     union {
126         xdr_data_t x;
127         float f;
128     } tmp;
129
130     tmp.f = f_Val;
131     return (XDR_encode_int32 (tmp.x));
132 }
133
134 float
135 XDR_decode_float ( const xdr_data_t & f_Val )
136 {
137     union {
138         xdr_data_t x;
139         float f;
140     } tmp;
141
142     tmp.x = XDR_decode_int32 (f_Val);
143     return tmp.f;
144 }
145
146 /* double */
147 xdr_data2_t
148 XDR_encode_double ( const double & d_Val )
149 {
150     union {
151         xdr_data2_t x;
152         double d;
153     } tmp;
154
155     tmp.d = d_Val;
156     return (XDR_encode_int64 (tmp.x));
157 }
158
159 double
160 XDR_decode_double ( const xdr_data2_t & d_Val )
161 {
162     union {
163         xdr_data2_t x;
164         double d;
165     } tmp;
166
167     tmp.x = XDR_decode_int64 (d_Val);
168     return tmp.d;
169 }
170