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
30get_u8(unsigned char **p)
31{
32 return *((*p)++);
33}
34
35static inline unsigned short
36get_u16(unsigned char **p) {
37 unsigned short ret;
38 ret=*((unsigned short *)*p);
39 *p+=sizeof(unsigned short);
40#ifdef WORDS_BIGENDIAN
41 return __bswap_16(ret);
42#else
43 return ret;
44#endif
45}
46
47static inline unsigned short
48get_u16_unal(unsigned char **p) {
49 unsigned short ret;
50 ret=*(*p)++;
51 ret|=(*(*p)++) << 8;
52 return ret;
53}
54
55
56static inline unsigned int
57get_u24(unsigned char **p) {
58 unsigned long ret;
59 ret=get_u16(p);
60 ret|=*((*p)++) << 16;
61 return ret;
62}
63
64
65static inline unsigned int
66get_u24_unal(unsigned char **p) {
67 unsigned long ret;
68 ret=get_u16_unal(p);
69 ret|=*((*p)++) << 16;
70 return ret;
71}
72
73
74static inline unsigned int
75get_u32(unsigned char **p) {
76 unsigned long ret;
77 ret=*((unsigned int *)*p);
78 *p+=sizeof(unsigned int);
79#ifdef WORDS_BIGENDIAN
80 return __bswap_32(ret);
81#else
82 return ret;
83#endif
84}
85
86static inline unsigned int
87get_u32_unal(unsigned char **p) {
88 unsigned long ret;
89 ret=*(*p)++;
90 ret|=(*(*p)++) << 8;
91 ret|=(*(*p)++) << 16;
92 ret|=(*(*p)++) << 24;
93 return ret;
94}
95
96static inline char *
97get_string(unsigned char **p)
98{
99 char *ret=(char *)(*p);
100 while (**p) (*p)++;
101 (*p)++;
102 return ret;
103}
104
105#define L(x) ({ unsigned char *t=(unsigned char *)&(x); t[0] | (t[1] << 8) | (t[2] << 16) | (t[3] << 24); })
106
107#endif
108
static unsigned int get_u24_unal(unsigned char **p)
Definition data.h:66
static unsigned int get_u32(unsigned char **p)
Definition data.h:75
static unsigned short get_u16(unsigned char **p)
Definition data.h:36
static unsigned char get_u8(unsigned char **p)
Definition data.h:30
static char * get_string(unsigned char **p)
Definition data.h:97
static unsigned int get_u32_unal(unsigned char **p)
Definition data.h:87
static unsigned int get_u24(unsigned char **p)
Definition data.h:57
static unsigned short get_u16_unal(unsigned char **p)
Definition data.h:48
#define __bswap_32(__bsx)
Definition endianess.h:87
#define __bswap_16(__bsx)
Definition endianess.h:86
unsigned char p[5]
Definition mg.h:2