Merge with modular_map
[navit-package] / src / data.h
1 static inline unsigned char
2 get_u8(unsigned char **p)
3 {
4         return *((*p)++);
5 }
6
7 static inline unsigned short
8 get_u16(unsigned char **p) {
9         unsigned short ret;
10         ret=*((unsigned short *)*p);
11         *p+=sizeof(unsigned short);
12         return ret;
13 }
14
15 static inline unsigned short
16 get_u16_unal(unsigned char **p) {
17         unsigned short ret;
18         ret=*(*p)++;
19         ret|=(*(*p)++) << 8;
20         return ret;
21 }
22
23
24 static inline unsigned int
25 get_u24(unsigned char **p) {
26         unsigned long ret;
27         ret=get_u16(p);
28         ret|=*((*p)++) << 16;
29         return ret;
30 }
31
32
33 static inline unsigned int
34 get_u32(unsigned char **p) {
35         unsigned long ret;
36         ret=*((unsigned int *)*p);
37         *p+=sizeof(unsigned int);
38         return ret;
39 }
40
41 static inline unsigned int
42 get_u32_unal(unsigned char **p) {
43         unsigned long ret;
44         ret=*(*p)++;
45         ret|=(*(*p)++) << 8;
46         ret|=(*(*p)++) << 16;
47         ret|=(*(*p)++) << 24;
48         return ret;
49 }
50
51 static inline char *
52 get_string(unsigned char **p)
53 {
54         char *ret=(char *)(*p);
55         while (**p) (*p)++;
56         (*p)++;
57         return ret;
58 }      
59
60 #define L(x) ({ unsigned char *t=(unsigned char *)&(x); t[0] | (t[1] << 8) | (t[2] << 16) | (t[3] << 24); })
61