[Plib-cvs] plib/src/util ul.h,1.64,1.65
Brought to you by:
sjbaker
From: Steve B. <sj...@us...> - 2004-03-14 18:36:04
|
Update of /cvsroot/plib/plib/src/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21326/plib/src/util Modified Files: ul.h Log Message: Added byte-swapping routines for float, int, short. Index: ul.h =================================================================== RCS file: /cvsroot/plib/plib/src/util/ul.h,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- ul.h 14 Mar 2004 18:06:27 -0000 1.64 +++ ul.h 14 Mar 2004 18:27:05 -0000 1.65 @@ -322,18 +322,28 @@ static const int _ulEndianTest = 1; #define ulIsLittleEndian (*((char *) &_ulEndianTest ) != 0) #define ulIsBigEndian (*((char *) &_ulEndianTest ) == 0) -static inline void ulEndianSwap(unsigned int *x) { + +inline void ulEndianSwap(unsigned int *x) +{ *x = (( *x >> 24 ) & 0x000000FF ) | - (( *x >> 8 ) & 0x0000FF00 ) | - (( *x << 8 ) & 0x00FF0000 ) | - (( *x << 24 ) & 0xFF000000 ) ; + (( *x >> 8 ) & 0x0000FF00 ) | + (( *x << 8 ) & 0x00FF0000 ) | + (( *x << 24 ) & 0xFF000000 ) ; } + -static inline void ulEndianSwap(unsigned short *x) { +inline void ulEndianSwap(unsigned short *x) +{ *x = (( *x >> 8 ) & 0x00FF ) | - (( *x << 8 ) & 0xFF00 ) ; + (( *x << 8 ) & 0xFF00 ) ; } + +inline void ulEndianSwap(float *x) { ulEndianSwap((unsigned int *)x); } +inline void ulEndianSwap(int *x) { ulEndianSwap((unsigned int *)x); } +inline void ulEndianSwap(short *x) { ulEndianSwap((unsigned short *)x); } + + inline unsigned short ulEndianLittle16(unsigned short x) { if (ulIsLittleEndian) { return x; @@ -356,7 +366,7 @@ if (ulIsLittleEndian) { return x; } else { - ulEndianSwap((unsigned int*)&x); + ulEndianSwap(&x); return x; } } @@ -386,7 +396,7 @@ return; } else { for (int i = 0; i < length; i++) { - ulEndianSwap((unsigned int*)x++); + ulEndianSwap(x++); } } } @@ -416,7 +426,7 @@ return; } else { for (int i = 0; i < length; i++) { - ulEndianSwap((unsigned int*)x++); + ulEndianSwap(x++); } } } @@ -443,7 +453,7 @@ if (ulIsBigEndian) { return x; } else { - ulEndianSwap((unsigned int*)&x); + ulEndianSwap(&x); return x; } } |