summaryrefslogtreecommitdiff
path: root/x11.h
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2012-07-14 22:24:17 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2012-10-02 22:14:45 -0700
commit5ec0ba545da0a9e52e2c6a473dbbc81b4a6f7f96 (patch)
tree9af2b84a28ff38098df1fbda92620822df6cbedc /x11.h
parentfdd58cacbb5b93b74ba9ba766e752b922a7c8b9c (diff)
downloadxscope-5ec0ba545da0a9e52e2c6a473dbbc81b4a6f7f96.tar.gz
Move ILong, IShort, etal to inline functions in x11.h
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Diffstat (limited to 'x11.h')
-rw-r--r--x11.h63
1 files changed, 56 insertions, 7 deletions
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