navit 0.5.3-trunk
Loading...
Searching...
No Matches
data.h
Go to the documentation of this file.
1
20#ifndef NAVIT_DATA_H
21#define NAVIT_DATA_H
22
23#include "config.h"
24
25#ifdef WORDS_BIGENDIAN
26# include <byteswap.h>
27#endif
28
29static inline unsigned char get_u8(unsigned char **p) {
30 return *((*p)++);
31}
32
33static inline unsigned short get_u16(unsigned char **p) {
34 unsigned short ret;
35 ret = *((unsigned short *)*p);
36 *p += sizeof(unsigned short);
37#ifdef WORDS_BIGENDIAN
38 return __bswap_16(ret);
39#else
40 return ret;
41#endif
42}
43
44static inline unsigned short get_u16_unal(unsigned char **p) {
45 unsigned short ret;
46 ret = *(*p)++;
47 ret |= (*(*p)++) << 8;
48 return ret;
49}
50
51static inline unsigned int get_u24(unsigned char **p) {
52 unsigned long ret;
53 ret = get_u16(p);
54 ret |= *((*p)++) << 16;
55 return ret;
56}
57
58static inline unsigned int get_u24_unal(unsigned char **p) {
59 unsigned long ret;
60 ret = get_u16_unal(p);
61 ret |= *((*p)++) << 16;
62 return ret;
63}
64
65static inline unsigned int get_u32(unsigned char **p) {
66 unsigned long ret;
67 ret = *((unsigned int *)*p);
68 *p += sizeof(unsigned int);
69#ifdef WORDS_BIGENDIAN
70 return __bswap_32(ret);
71#else
72 return ret;
73#endif
74}
75
76static inline unsigned int get_u32_unal(unsigned char **p) {
77 unsigned long ret;
78 ret = *(*p)++;
79 ret |= (*(*p)++) << 8;
80 ret |= (*(*p)++) << 16;
81 ret |= (*(*p)++) << 24;
82 return ret;
83}
84
85static inline char *get_string(unsigned char **p) {
86 char *ret = (char *)(*p);
87 while (**p)
88 (*p)++;
89 (*p)++;
90 return ret;
91}
92
93#define L(x) \
94 ({ \
95 unsigned char *t = (unsigned char *)&(x); \
96 t[0] | (t[1] << 8) | (t[2] << 16) | (t[3] << 24); \
97 })
98
99#endif
static unsigned int get_u24_unal(unsigned char **p)
Definition data.h:58
static unsigned int get_u32(unsigned char **p)
Definition data.h:65
static unsigned short get_u16(unsigned char **p)
Definition data.h:33
static unsigned char get_u8(unsigned char **p)
Definition data.h:29
static char * get_string(unsigned char **p)
Definition data.h:85
static unsigned int get_u32_unal(unsigned char **p)
Definition data.h:76
static unsigned int get_u24(unsigned char **p)
Definition data.h:51
static unsigned short get_u16_unal(unsigned char **p)
Definition data.h:44
#define __bswap_32(__bsx)
Definition endianess.h:87
#define __bswap_16(__bsx)
Definition endianess.h:86
unsigned char p[5]
Definition mg.h:2