summaryrefslogtreecommitdiff
path: root/source/q_shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/q_shared.h')
-rw-r--r--source/q_shared.h33
1 files changed, 15 insertions, 18 deletions
diff --git a/source/q_shared.h b/source/q_shared.h
index 0cdb97c..541b046 100644
--- a/source/q_shared.h
+++ b/source/q_shared.h
@@ -474,23 +474,14 @@ char *va( const char *format, ... ) q_printf( 1, 2 );
//=============================================
static inline uint16_t ShortSwap( uint16_t s ) {
- byte b1, b2;
-
- b1 = s & 255;
- b2 = ( s >> 8 ) & 255;
-
- return ( b1 << 8 ) | b2;
+ s = ( s >> 8 ) | ( s << 8 );
+ return s;
}
static inline uint32_t LongSwap( uint32_t l ) {
- byte b1, b2, b3, b4;
-
- b1 = l & 255;
- b2 = ( l >> 8 ) & 255;
- b3 = ( l >> 16 ) & 255;
- b4 = ( l >> 24 ) & 255;
-
- return ( b1 << 24 ) | ( b2 << 16 ) | ( b3 << 8 ) | b4;
+ l = ( ( l >> 8 ) & 0x00ff00ff ) | ( ( l << 8 ) & 0xff00ff00 );
+ l = ( l >> 16 ) | ( l << 16 );
+ return l;
}
static inline float FloatSwap( float f ) {
@@ -511,8 +502,8 @@ static inline float FloatSwap( float f ) {
#define LittleShort(x) ((uint16_t)(x))
#define LittleLong(x) ((uint32_t)(x))
#define LittleFloat(x) ((float)(x))
-#define MakeLong(b1,b2,b3,b4) (((b4)<<24)|((b3)<<16)|((b2)<<8)|(b1))
-#define MakeShort(b1,b2) (((b2)<<8)|(b1))
+#define MakeRawLong(b1,b2,b3,b4) (((b4)<<24)|((b3)<<16)|((b2)<<8)|(b1))
+#define MakeRawShort(b1,b2) (((b2)<<8)|(b1))
#elif __BYTE_ORDER == __BIG_ENDIAN
#define BigShort(x) ((uint16_t)(x))
#define BigLong(x) ((uint32_t)(x))
@@ -520,12 +511,18 @@ static inline float FloatSwap( float f ) {
#define LittleShort ShortSwap
#define LittleLong LongSwap
#define LittleFloat FloatSwap
-#define MakeLong(b1,b2,b3,b4) (((b1)<<24)|((b2)<<16)|((b3)<<8)|(b4))
-#define MakeShort(b1,b2) (((b1)<<8)|(b2))
+#define MakeRawLong(b1,b2,b3,b4) (((b1)<<24)|((b2)<<16)|((b3)<<8)|(b4))
+#define MakeRawShort(b1,b2) (((b1)<<8)|(b2))
#else
#error Unknown byte order
#endif
+#define LittleLongMem(p) (((p)[3]<<24)|((p)[2]<<16)|((p)[1]<<8)|(p)[0])
+#define LittleShortMem(p) (((p)[1]<<8)|(p)[0])
+
+#define RawLongMem(p) MakeRawLong((p)[0],(p)[1],(p)[2],(p)[3])
+#define RawShortMem(p) MakeRawShort((p)[0],(p)[1])
+
#define LittleVector(a,b) \
((b)[0]=LittleFloat((a)[0]),\
(b)[1]=LittleFloat((a)[1]),\