summaryrefslogtreecommitdiff
path: root/bits.h
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-06-09 14:17:27 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-06-09 14:17:27 +0000
commit0c79375925aa2f0457d5826f6ecada3cf02953f8 (patch)
treeb61061baabad33f49b722e2e6d2eb23945259f1d /bits.h
parent31c86f6986feb0d148d972ebeb81ad1f36622320 (diff)
downloadgpsd-0c79375925aa2f0457d5826f6ecada3cf02953f8.tar.gz
Second stage of bits.h integration; make the buffer argument explicit.
Diffstat (limited to 'bits.h')
-rw-r--r--bits.h23
1 files changed, 10 insertions, 13 deletions
diff --git a/bits.h b/bits.h
index 1dcea658..c38fa7e5 100644
--- a/bits.h
+++ b/bits.h
@@ -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)