aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rwxr-xr-xendian.c39
-rwxr-xr-xendian.h26
3 files changed, 45 insertions, 24 deletions
diff --git a/Makefile b/Makefile
index 6026ace..ca5c847 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,6 @@
-OBJECTS = main.o general.o brlyt.o brlan.o memfile.o xml.o
+GENERICOBJECTS = main.o general.o memfile.o xml.o endian.o
+MAINOBJECTS = brlyt.o brlan.o
+OBJECTS = $(GENERICOBJECTS) $(MAINOBJECTS)
LIBS = -lmxml
OUTPUT = benzin
main: $(OBJECTS)
diff --git a/endian.c b/endian.c
new file mode 100755
index 0000000..ea326a9
--- /dev/null
+++ b/endian.c
@@ -0,0 +1,39 @@
+#ifndef _ENDIAN_H_
+#define _ENDIAN_H_
+
+#include "types.h"
+#include "endian.h"
+
+//#define be16(x) ((x>>8)|(x<<8))
+//#define be32(x) ((x>>24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x<<24))
+//#define be64(x) ((x>>56)|((x<<40)&(u64)0x00FF000000000000)|((x<<24)&(u64)0x0000FF0000000000)|((x<<8)&(u64)0x000000FF00000000)|((x>>8)&(u64)0x00000000FF000000)|((x>>24)&(u64)0x0000000000FF0000)|((x<<40)&(u64)0x000000000000FF00)|(x<<56))
+
+u16 be16(u16 x)
+{
+ return (x>>8) |
+ (x<<8);
+}
+
+u32 be32(u32 x)
+{
+ return (x>>24) |
+ ((x<<8) & 0x00FF0000) |
+ ((x>>8) & 0x0000FF00) |
+ (x<<24);
+}
+
+// __int64 for MSVC, "long long" for gcc
+u64 be64(u64 x)
+{
+ return (x>>56) |
+ ((x<<40) & (u64)0x00FF000000000000LL) |
+ ((x<<24) & (u64)0x0000FF0000000000LL) |
+ ((x<<8) & (u64)0x000000FF00000000LL) |
+ ((x>>8) & (u64)0x00000000FF000000LL) |
+ ((x>>24) & (u64)0x0000000000FF0000LL) |
+ ((x>>40) & (u64)0x000000000000FF00LL) |
+ (x<<56);
+}
+
+#endif //_ENDIAN_H_
+
diff --git a/endian.h b/endian.h
index 4c12e6b..51ce90f 100755
--- a/endian.h
+++ b/endian.h
@@ -7,32 +7,12 @@
//#define be32(x) ((x>>24)|((x<<8)&0x00FF0000)|((x>>8)&0x0000FF00)|(x<<24))
//#define be64(x) ((x>>56)|((x<<40)&(u64)0x00FF000000000000)|((x<<24)&(u64)0x0000FF0000000000)|((x<<8)&(u64)0x000000FF00000000)|((x>>8)&(u64)0x00000000FF000000)|((x>>24)&(u64)0x0000000000FF0000)|((x<<40)&(u64)0x000000000000FF00)|(x<<56))
-u16 be16(u16 x)
-{
- return (x>>8) |
- (x<<8);
-}
+u16 be16(u16 x);
-u32 be32(u32 x)
-{
- return (x>>24) |
- ((x<<8) & 0x00FF0000) |
- ((x>>8) & 0x0000FF00) |
- (x<<24);
-}
+u32 be32(u32 x);
// __int64 for MSVC, "long long" for gcc
-u64 be64(u64 x)
-{
- return (x>>56) |
- ((x<<40) & (u64)0x00FF000000000000) |
- ((x<<24) & (u64)0x0000FF0000000000) |
- ((x<<8) & (u64)0x000000FF00000000) |
- ((x>>8) & (u64)0x00000000FF000000) |
- ((x>>24) & (u64)0x0000000000FF0000) |
- ((x>>40) & (u64)0x000000000000FF00) |
- (x<<56);
-}
+u64 be64(u64 x);
#endif //_ENDIAN_H_