New patch to cope both with libgps18 and libgps19
[navit-package] / navit / data.h
index 97663e1..19928a3 100644 (file)
 #ifndef NAVIT_DATA_H
 #define NAVIT_DATA_H
 
+#include "config.h"
+
+#ifdef WORDS_BIGENDIAN
+#include <byteswap.h>
+#endif
+
 static inline unsigned char
 get_u8(unsigned char **p)
 {
@@ -31,7 +37,11 @@ get_u16(unsigned char **p) {
        unsigned short ret;
        ret=*((unsigned short *)*p);
        *p+=sizeof(unsigned short);
+#ifdef WORDS_BIGENDIAN
+       return __bswap_16(ret);
+#else
        return ret;
+#endif
 }
 
 static inline unsigned short
@@ -53,11 +63,24 @@ get_u24(unsigned char **p) {
 
 
 static inline unsigned int
+get_u24_unal(unsigned char **p) {
+       unsigned long ret;
+       ret=get_u16_unal(p);
+       ret|=*((*p)++) << 16;
+       return ret;
+}
+
+
+static inline unsigned int
 get_u32(unsigned char **p) {
        unsigned long ret;
        ret=*((unsigned int *)*p);
        *p+=sizeof(unsigned int);
+#ifdef WORDS_BIGENDIAN
+       return __bswap_32(ret);
+#else
        return ret;
+#endif
 }
 
 static inline unsigned int