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;
}
}
|