1999-08-14 08:06:35 -04:00
|
|
|
#define DEFINE_CONV_8(name) \
|
1999-08-27 13:40:40 -04:00
|
|
|
static void Convert_##name##_8(const char *buf_in, char *buf_out, wxUint32 len) \
|
1999-08-14 08:06:35 -04:00
|
|
|
{\
|
|
|
|
wxUint16 val; \
|
|
|
|
\
|
|
|
|
while (len > 0) { \
|
|
|
|
val = *buf_in++; \
|
|
|
|
len--;
|
|
|
|
|
|
|
|
#if SWAP_BYTES==0
|
|
|
|
|
|
|
|
#define DEFINE_CONV_16(name) \
|
1999-08-27 13:40:40 -04:00
|
|
|
static void Convert_##name##_16_no(const char *buf_in, char *buf_out, wxUint32 len) \
|
1999-08-14 08:06:35 -04:00
|
|
|
{\
|
|
|
|
wxUint16 val; \
|
|
|
|
\
|
|
|
|
while (len > 0) { \
|
|
|
|
val = *(wxUint16 *)(buf_in); \
|
|
|
|
buf_in += 2; \
|
|
|
|
len -= 2;
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
#define DEFINE_CONV_16(name) \
|
1999-08-27 13:40:40 -04:00
|
|
|
static void Convert_##name##_16_yes(const char *buf_in, char *buf_out, wxUint32 len) \
|
1999-08-14 08:06:35 -04:00
|
|
|
{\
|
|
|
|
wxUint16 val; \
|
|
|
|
\
|
|
|
|
while (len > 0) { \
|
|
|
|
val = *(wxUint16 *)(buf_in); \
|
|
|
|
val = wxUINT16_SWAP_ALWAYS(val); \
|
|
|
|
buf_in += 2; \
|
|
|
|
len -= 2;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define END_CONV } }
|
|
|
|
|
|
|
|
#define PUT16 *((wxUint16 *)buf_out) = val, buf_out += 2;
|
|
|
|
#define PUT16_SWAP *((wxUint16 *)buf_out) = wxUINT16_SWAP_ALWAYS(val), buf_out += 2;
|
|
|
|
#define PUT8 *buf_out++ = val;
|
|
|
|
#define CHANGE16_SIGN val ^= 0x8000;
|
|
|
|
#define CHANGE8_SIGN val ^= 0x80;
|
|
|
|
#define REDUCE16_TO_8 val /= 256;
|
|
|
|
#define AUGMENT8_TO_16 val *= 256;
|
|
|
|
|
|
|
|
DEFINE_CONV_16(16to8)
|
|
|
|
REDUCE16_TO_8
|
|
|
|
PUT8
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_16(16to8_U2S)
|
|
|
|
CHANGE16_SIGN
|
|
|
|
REDUCE16_TO_8
|
|
|
|
PUT8
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_16(U2S)
|
|
|
|
CHANGE16_SIGN
|
|
|
|
PUT16
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_16(U2S_SWAP)
|
|
|
|
CHANGE16_SIGN
|
|
|
|
PUT16_SWAP
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
#if SWAP_BYTES == 0
|
|
|
|
|
|
|
|
DEFINE_CONV_16(SWAP)
|
|
|
|
PUT16_SWAP
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_8(U2S)
|
|
|
|
CHANGE8_SIGN
|
|
|
|
PUT8
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_8(8to16)
|
|
|
|
AUGMENT8_TO_16
|
|
|
|
PUT16
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_8(8to16_SWAP)
|
|
|
|
AUGMENT8_TO_16
|
|
|
|
PUT16_SWAP
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_8(8to16_U2S)
|
|
|
|
CHANGE8_SIGN
|
|
|
|
AUGMENT8_TO_16
|
|
|
|
PUT16
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
DEFINE_CONV_8(8to16_U2S_SWAP)
|
|
|
|
CHANGE8_SIGN
|
|
|
|
AUGMENT8_TO_16
|
|
|
|
PUT16_SWAP
|
|
|
|
END_CONV
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#undef DEFINE_CONV_16
|
|
|
|
#undef DEFINE_CONV_8
|
|
|
|
#undef END_CONV
|
|
|
|
#undef CHANGE16_SIGN
|
|
|
|
#undef CHANGE8_SIGN
|
|
|
|
#undef PUT16_SWAP
|
|
|
|
#undef PUT16
|
|
|
|
#undef PUT8
|