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)