wxWidgets/utils/wxMMedia2/lib/converter.def

111 lines
1.8 KiB
Modula-2
Raw Normal View History

#define DEFINE_CONV_8(name) \
static void Convert_##name##_8(const char *buf_in, char *buf_out, wxUint32 len) \
{\
wxUint16 val; \
\
while (len > 0) { \
val = *buf_in++; \
len--;
#if SWAP_BYTES==0
#define DEFINE_CONV_16(name) \
static void Convert_##name##_16_no(const char *buf_in, char *buf_out, wxUint32 len) \
{\
wxUint16 val; \
\
while (len > 0) { \
val = *(wxUint16 *)(buf_in); \
buf_in += 2; \
len -= 2;
#else
#define DEFINE_CONV_16(name) \
static void Convert_##name##_16_yes(const char *buf_in, char *buf_out, wxUint32 len) \
{\
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