110 lines
2.6 KiB
C
110 lines
2.6 KiB
C
/*
|
|
|
|
|
|
NetEnd.h : byte swap management
|
|
|
|
|
|
*/
|
|
|
|
#if !defined(__NETENDIAN_TYPES__)
|
|
#define __NETENDIAN_TYPES__
|
|
|
|
#if !defined(ONLY_TYPES)
|
|
#define NETENDIAN_UNDEF
|
|
#define ONLY_TYPES
|
|
#endif /* !ONLY_TYPES */
|
|
|
|
/*
|
|
* include here any other include files you need
|
|
*/
|
|
#include "PrivNetDef.h"
|
|
|
|
#if defined(NETENDIAN_UNDEF)
|
|
#undef ONLY_TYPES
|
|
#undef NETENDIAN_UNDEF
|
|
#endif /* !NETENDIAN_UNDEF */
|
|
|
|
|
|
#endif /* !__NETENDIAN_TYPES__ */
|
|
|
|
#if !defined(ONLY_TYPES)
|
|
|
|
#if !defined(__NETENDIAN_VARS__)
|
|
#define __NETENDIAN_VARS__
|
|
|
|
#undef EXTERN
|
|
#undef extern
|
|
#if !defined(GLOBALS)
|
|
#define EXTERN extern
|
|
#else /* !GLOBALS */
|
|
#define EXTERN
|
|
#endif /* !GLOBALS */
|
|
|
|
|
|
#define NetLib_M_uc_BigEndian ((NetLib_tducBigLittleEndian)0x00)
|
|
#define NetLib_M_uc_LittleEndian ((NetLib_tducBigLittleEndian)0xff)
|
|
|
|
#define NetLib_M_uc_IsLittleEndianRoute ((NetLib_tducBigLittleEndian)0x0f)
|
|
#define NetLib_M_uc_IsLittleEndianSender ((NetLib_tducBigLittleEndian)0xf0)
|
|
|
|
#undef extern
|
|
#endif /* !__NETENDIAN_VARS__ */
|
|
|
|
#if !defined (__NETENDIAN_PROTOS__)
|
|
#define __NETENDIAN_PROTOS__
|
|
|
|
#define M_NET_uwLOWORD(l) ((unsigned short)(l))
|
|
#define M_NET_uwHIWORD(l) ((unsigned short)(((unsigned long)(l) >> 16) & 0xFFFF))
|
|
#define M_NET_ucLOBYTE(w) ((unsigned char)(w))
|
|
#define M_NET_ucHIBYTE(w) ((unsigned char)(((unsigned short)(w) >> 8) & 0xFF))
|
|
#define M_NET_wMAKEWORD(a, b)\
|
|
((unsigned short)(((unsigned char)(a)) | ((unsigned short)((unsigned char)(b))) << 8))
|
|
#define M_NET_lMAKELONG(a, b) \
|
|
((unsigned long)(((unsigned short)(a)) | ((unsigned long)((unsigned short)(b))) << 16))
|
|
|
|
#define M_NET_ulSwapLittleBigEndian(ulParam)\
|
|
(\
|
|
(unsigned long)\
|
|
(\
|
|
M_NET_lMAKELONG\
|
|
(\
|
|
/*LOWORD*/\
|
|
M_NET_wMAKEWORD\
|
|
(\
|
|
M_NET_ucHIBYTE(M_NET_uwHIWORD(ulParam)),/*LOBYTE*/\
|
|
M_NET_ucLOBYTE(M_NET_uwHIWORD(ulParam))/* HIBYTE*/\
|
|
),\
|
|
/*HIWORD*/\
|
|
M_NET_wMAKEWORD\
|
|
(\
|
|
M_NET_ucHIBYTE(M_NET_uwLOWORD(ulParam)),/*LOBYTE*/\
|
|
M_NET_ucLOBYTE(M_NET_uwLOWORD(ulParam))/* HIBYTE*/\
|
|
)\
|
|
)\
|
|
)\
|
|
)
|
|
|
|
#define M_NET_uwSwapLittleBigEndian(uwParam) \
|
|
(\
|
|
(unsigned short)\
|
|
(\
|
|
M_NET_wMAKEWORD\
|
|
(\
|
|
M_NET_ucHIBYTE(uwParam),/*LOBYTE*/\
|
|
M_NET_ucLOBYTE(uwParam)/*HIBYTE*/\
|
|
)\
|
|
)\
|
|
)
|
|
|
|
/*Litte/big endian :*/
|
|
_NET_EXPORT_ NetLib_tdeErrorStatus _NET_CALLING_CONV_ NetLib_eSetLittleBigEndian(NetLib_tducBigLittleEndian);
|
|
_NET_EXPORT_ NetLib_tducBigLittleEndian _NET_CALLING_CONV_ NetLib_ucGetLittleBigEndian(void);
|
|
NetLib_tdeErrorStatus NetLib_eProcessLittleBigEndian(void);
|
|
NetLib_tdeErrorStatus NetLib_eSwapLittleBigEndianMsgHeader(tdstNetMessage*);
|
|
|
|
|
|
#endif /* !__NETENDIAN_PROTOS__ */
|
|
|
|
#endif /* !ONLY_TYPES */
|
|
|