26 #error tds.h must be included before tdsbytes.h
47 #define TDS_GET_A1LE(ptr) (((TDS_UCHAR*)(ptr))[0])
48 #define TDS_GET_A1BE(ptr) TDS_GET_A1LE(ptr)
49 #define TDS_GET_UA1LE(ptr) TDS_GET_A1LE(ptr)
50 #define TDS_GET_UA1BE(ptr) TDS_GET_A1LE(ptr)
52 #define TDS_PUT_A1LE(ptr,val) do { ((TDS_UCHAR*)(ptr))[0] = (val); } while(0)
53 #define TDS_PUT_A1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
54 #define TDS_PUT_UA1LE(ptr,val) TDS_PUT_A1LE(ptr,val)
55 #define TDS_PUT_UA1BE(ptr,val) TDS_PUT_A1LE(ptr,val)
58 #define TDS_GET_UA2LE(ptr) (((TDS_UCHAR*)(ptr))[1] * 0x100u + ((TDS_UCHAR*)(ptr))[0])
59 #define TDS_GET_UA2BE(ptr) (((TDS_UCHAR*)(ptr))[0] * 0x100u + ((TDS_UCHAR*)(ptr))[1])
60 #define TDS_GET_A2LE(ptr) TDS_GET_UA2LE(ptr)
61 #define TDS_GET_A2BE(ptr) TDS_GET_UA2BE(ptr)
63 #define TDS_PUT_UA2LE(ptr,val) do {\
64 ((TDS_UCHAR*)(ptr))[1] = (val)>>8; ((TDS_UCHAR*)(ptr))[0] = (val); } while(0)
65 #define TDS_PUT_UA2BE(ptr,val) do {\
66 ((TDS_UCHAR*)(ptr))[0] = (val)>>8; ((TDS_UCHAR*)(ptr))[1] = (val); } while(0)
67 #define TDS_PUT_A2LE(ptr,val) TDS_PUT_UA2LE(ptr,val)
68 #define TDS_PUT_A2BE(ptr,val) TDS_PUT_UA2BE(ptr,val)
71 #define TDS_GET_UA4LE(ptr) \
72 (((TDS_UCHAR*)(ptr))[3] * 0x1000000u + ((TDS_UCHAR*)(ptr))[2] * 0x10000u +\
73 ((TDS_UCHAR*)(ptr))[1] * 0x100u + ((TDS_UCHAR*)(ptr))[0])
74 #define TDS_GET_UA4BE(ptr) \
75 (((TDS_UCHAR*)(ptr))[0] * 0x1000000u + ((TDS_UCHAR*)(ptr))[1] * 0x10000u +\
76 ((TDS_UCHAR*)(ptr))[2] * 0x100u + ((TDS_UCHAR*)(ptr))[3])
77 #define TDS_GET_A4LE(ptr) TDS_GET_UA4LE(ptr)
78 #define TDS_GET_A4BE(ptr) TDS_GET_UA4BE(ptr)
80 #define TDS_PUT_UA4LE(ptr,val) do {\
81 ((TDS_UCHAR*)(ptr))[3] = (val)>>24; ((TDS_UCHAR*)(ptr))[2] = (val)>>16;\
82 ((TDS_UCHAR*)(ptr))[1] = (val)>>8; ((TDS_UCHAR*)(ptr))[0] = (val); } while(0)
83 #define TDS_PUT_UA4BE(ptr,val) do {\
84 ((TDS_UCHAR*)(ptr))[0] = (val)>>24; ((TDS_UCHAR*)(ptr))[1] = (val)>>16;\
85 ((TDS_UCHAR*)(ptr))[2] = (val)>>8; ((TDS_UCHAR*)(ptr))[3] = (val); } while(0)
86 #define TDS_PUT_A4LE(ptr,val) TDS_PUT_UA4LE(ptr,val)
87 #define TDS_PUT_A4BE(ptr,val) TDS_PUT_UA4BE(ptr,val)
90 #ifdef WORDS_BIGENDIAN
91 # define TDS_GET_A1(ptr) TDS_GET_A1BE(ptr)
92 # define TDS_GET_UA1(ptr) TDS_GET_UA1BE(ptr)
93 # define TDS_GET_A2(ptr) TDS_GET_A2BE(ptr)
94 # define TDS_GET_UA2(ptr) TDS_GET_UA2BE(ptr)
95 # define TDS_GET_A4(ptr) TDS_GET_A4BE(ptr)
96 # define TDS_GET_UA4(ptr) TDS_GET_UA4BE(ptr)
99 # define TDS_GET_A2BE(ptr) (*((TDS_USMALLINT*)(ptr)))
100 # define TDS_GET_A4BE(ptr) (*((TDS_UINT*)(ptr)))
102 # define TDS_PUT_A1(ptr,val) TDS_PUT_A1BE(ptr,val)
103 # define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1BE(ptr,val)
104 # define TDS_PUT_A2(ptr,val) TDS_PUT_A2BE(ptr,val)
105 # define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2BE(ptr,val)
106 # define TDS_PUT_A4(ptr,val) TDS_PUT_A4BE(ptr,val)
107 # define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4BE(ptr,val)
110 # define TDS_PUT_A2BE(ptr,val) (*((TDS_USMALLINT*)(ptr)) = (val))
111 # define TDS_PUT_A4BE(ptr,val) (*((TDS_UINT*)(ptr)) = (val))
113 # define TDS_GET_A1(ptr) TDS_GET_A1LE(ptr)
114 # define TDS_GET_UA1(ptr) TDS_GET_UA1LE(ptr)
115 # define TDS_GET_A2(ptr) TDS_GET_A2LE(ptr)
116 # define TDS_GET_UA2(ptr) TDS_GET_UA2LE(ptr)
117 # define TDS_GET_A4(ptr) TDS_GET_A4LE(ptr)
118 # define TDS_GET_UA4(ptr) TDS_GET_UA4LE(ptr)
121 # define TDS_GET_A2LE(ptr) (*((TDS_USMALLINT*)(ptr)))
122 # define TDS_GET_A4LE(ptr) (*((TDS_UINT*)(ptr)))
124 # define TDS_PUT_A1(ptr,val) TDS_PUT_A1LE(ptr,val)
125 # define TDS_PUT_UA1(ptr,val) TDS_PUT_UA1LE(ptr,val)
126 # define TDS_PUT_A2(ptr,val) TDS_PUT_A2LE(ptr,val)
127 # define TDS_PUT_UA2(ptr,val) TDS_PUT_UA2LE(ptr,val)
128 # define TDS_PUT_A4(ptr,val) TDS_PUT_A4LE(ptr,val)
129 # define TDS_PUT_UA4(ptr,val) TDS_PUT_UA4LE(ptr,val)
132 # define TDS_PUT_A2LE(ptr,val) (*((TDS_USMALLINT*)(ptr)) = (val))
133 # define TDS_PUT_A4LE(ptr,val) (*((TDS_UINT*)(ptr)) = (val))
137 #if defined(__i386__) || defined(__amd64__) || defined(__CRIS__) ||\
138 defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) ||\
139 defined(__s390__) || defined(__s390x__) || defined(__m68k__)
140 # ifdef WORDS_BIGENDIAN
141 # undef TDS_GET_UA2BE
142 # undef TDS_GET_UA4BE
143 # define TDS_GET_UA2BE(ptr) TDS_GET_A2BE(ptr)
144 # define TDS_GET_UA4BE(ptr) TDS_GET_A4BE(ptr)
146 # undef TDS_PUT_UA2BE
147 # undef TDS_PUT_UA4BE
148 # define TDS_PUT_UA2BE(ptr,val) TDS_PUT_A2BE(ptr,val)
149 # define TDS_PUT_UA4BE(ptr,val) TDS_PUT_A4BE(ptr,val)
151 # undef TDS_GET_UA2LE
152 # undef TDS_GET_UA4LE
153 # define TDS_GET_UA2LE(ptr) TDS_GET_A2LE(ptr)
154 # define TDS_GET_UA4LE(ptr) TDS_GET_A4LE(ptr)
156 # undef TDS_PUT_UA2LE
157 # undef TDS_PUT_UA4LE
158 # define TDS_PUT_UA2LE(ptr,val) TDS_PUT_A2LE(ptr,val)
159 # define TDS_PUT_UA4LE(ptr,val) TDS_PUT_A4LE(ptr,val)
163 #if defined(__linux__) && defined(__GNUC__) && defined(__i386__)
164 # include <byteswap.h>
165 # undef TDS_GET_UA2BE
166 # undef TDS_GET_UA4BE
167 # define TDS_GET_UA2BE(ptr) ({ TDS_USMALLINT _tds_si = TDS_GET_UA2LE(ptr); bswap_16(_tds_si); })
168 # define TDS_GET_UA4BE(ptr) ({ TDS_UINT _tds_i = TDS_GET_UA4LE(ptr); bswap_32(_tds_i); })
170 # undef TDS_PUT_UA2BE
171 # undef TDS_PUT_UA4BE
172 # define TDS_PUT_UA2BE(ptr,val) do {\
173 TDS_USMALLINT _tds_si = bswap_16(val); TDS_PUT_UA2LE(ptr,_tds_si); } while(0)
174 # define TDS_PUT_UA4BE(ptr,val) do {\
175 TDS_UINT _tds_i = bswap_32(val); TDS_PUT_UA4LE(ptr,_tds_i); } while(0)