diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2005-06-09 14:17:27 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2005-06-09 14:17:27 +0000 |
commit | 0c79375925aa2f0457d5826f6ecada3cf02953f8 (patch) | |
tree | b61061baabad33f49b722e2e6d2eb23945259f1d /bits.h | |
parent | 31c86f6986feb0d148d972ebeb81ad1f36622320 (diff) | |
download | gpsd-0c79375925aa2f0457d5826f6ecada3cf02953f8.tar.gz |
Second stage of bits.h integration; make the buffer argument explicit.
Diffstat (limited to 'bits.h')
-rw-r--r-- | bits.h | 23 |
1 files changed, 10 insertions, 13 deletions
@@ -4,9 +4,6 @@ * these macros extract bytes, words, longwords, floats or doubles from * a message that contains these items in MSB-first byte order. * - * the macros access a local buffer named "buf" which must be declared - * as unsigned char buf[SIZE]; - * * assumptions: * char is 8 bits, short is 16 bits, int is 32 bits, long long is 64 bits, * float is 32 bits IEEE754, double is 64 bits IEEE754. @@ -30,13 +27,13 @@ union long_double { double d; }; -#define getsb(off) ((char)buf[off]) -#define getub(off) (buf[off]) -#define getsw(off) ((short)(((unsigned)getub(off) << 8) | (unsigned)getub(off+1))) -#define getuw(off) ((unsigned short)(((unsigned)getub(off) << 8) | (unsigned)getub(off+1))) -#define getsl(off) ((int)(((unsigned)getuw(off) << 16) | getuw(off+2))) -#define getul(off) ((unsigned int)(((unsigned)getuw(off) << 16) | getuw(off+2))) -#define getsL(off) ((long long)(((unsigned long long)getul(off) << 32) | getul(off+4))) -#define getuL(off) ((unsigned long long)(((unsigned long long)getul(off) << 32) | getul(off+4))) -#define getf(off) (i_f.i = getsl(off), i_f.f) -#define getd(off) (l_d.l = getsL(off), l_d.d) +#define getsb(buf, off) ((char)buf[off]) +#define getub(buf, off) (buf[off]) +#define getsw(buf, off) ((short)(((unsigned)getub(buf, off) << 8) | (unsigned)getub(buf, off+1))) +#define getuw(buf, off) ((unsigned short)(((unsigned)getub(buf, off) << 8) | (unsigned)getub(buf, off+1))) +#define getsl(buf, off) ((int)(((unsigned)getuw(buf, off) << 16) | getuw(buf, off+2))) +#define getul(buf, off) ((unsigned int)(((unsigned)getuw(buf, off) << 16) | getuw(buf, off+2))) +#define getsL(buf, off) ((long long)(((unsigned long long)getul(buf, off) << 32) | getul(buf, off+4))) +#define getuL(buf, off) ((unsigned long long)(((unsigned long long)getul(buf, off) << 32) | getul(buf, off+4))) +#define getf(buf, off) (i_f.i = getsl(buf, off), i_f.f) +#define getd(buf, off) (l_d.l = getsL(buf, off), l_d.d) |