From 5ec0ba545da0a9e52e2c6a473dbbc81b4a6f7f96 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sat, 14 Jul 2012 22:24:17 -0700 Subject: Move ILong, IShort, etal to inline functions in x11.h Signed-off-by: Alan Coopersmith --- x11.h | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 7 deletions(-) (limited to 'x11.h') diff --git a/x11.h b/x11.h index 2a8b6bb..ed0f3d6 100644 --- a/x11.h +++ b/x11.h @@ -531,13 +531,64 @@ extern void PrintValueRec(unsigned long key, unsigned long cmask, short ctype); /* */ /* ************************************************************ */ +/* we will need to be able to interpret the values stored in the + requests as various built-in types. The following routines + support the types built into X11 */ + +static inline long +pad(long n) +{ + /* round up to next multiple of 4 */ + return ((n + 3) & ~0x3); +} + +static inline uint32_t +ILong(const unsigned char buf[]) +{ + /* check for byte-swapping */ + if (littleEndian) + return ((((((buf[3] << 8) | buf[2]) << 8) | buf[1]) << 8) | buf[0]); + return ((((((buf[0] << 8) | buf[1]) << 8) | buf[2]) << 8) | buf[3]); +} + +static inline uint16_t +IShort(const unsigned char buf[]) +{ + /* check for byte-swapping */ + if (littleEndian) + return (buf[1] << 8) | buf[0]; + return ((buf[0] << 8) | buf[1]); +} + +static inline uint16_t +IChar2B(const unsigned char buf[]) +{ + /* CHAR2B is like an IShort, but not byte-swapped */ + return ((buf[0] << 8) | buf[1]); +} + +static inline uint8_t +IByte(const unsigned char buf[]) +{ + return (buf[0]); +} + +static inline Boolean +IBool(const unsigned char buf[]) +{ + if (buf[0] != 0) + return (true); + else + return (false); +} + +/* ************************************************************ */ +/* */ +/* */ +/* ************************************************************ */ + /* declaration of the types of some common functions */ -extern uint32_t ILong(const unsigned char *buf); -extern uint16_t IShort(const unsigned char *buf); -extern uint16_t IChar2B(const unsigned char *buf); -extern uint8_t IByte(const unsigned char *buf); -extern Boolean IBool(const unsigned char *buf); extern int PrintString8(const unsigned char *buf, int number, const char *name); extern int PrintString16(const unsigned char *buf, int number, @@ -552,8 +603,6 @@ extern long PrintList(const unsigned char *buf, long number, short ListType, extern long PrintListSTR(const unsigned char *buf, long number, const char *name); -extern long pad(long n); - extern const char *REQUESTHEADER, *EVENTHEADER, *ERRORHEADER, *REPLYHEADER; #define GC_function 0x00000001L -- cgit v1.2.1