summaryrefslogtreecommitdiff
path: root/decode_render.c
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@sun.com>2009-08-12 14:18:25 -0700
committerAlan Coopersmith <alan.coopersmith@sun.com>2009-08-12 16:44:40 -0700
commit3199c6fb39f02b36a07ef65bf4b07d6ec340944d (patch)
tree59613bdf195e6f0490f672badd881372f2de9ac9 /decode_render.c
parentfccbbd6f3bdc090d2da9b32fdff2fd13679e2b78 (diff)
downloadxscope-3199c6fb39f02b36a07ef65bf4b07d6ec340944d.tar.gz
Convert extension decoding to function pointer tables
Each extension now registers it's own request, reply, event & error decoding functions as needed in the central table, instead of a cascading block of if/else statements to modify for each new extension added. Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Diffstat (limited to 'decode_render.c')
-rw-r--r--decode_render.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/decode_render.c b/decode_render.c
index e1f5c05..4035960 100644
--- a/decode_render.c
+++ b/decode_render.c
@@ -32,9 +32,11 @@
#include "renderscope.h"
#include "extensions.h"
-unsigned char RENDERRequest, RENDERError;
+static unsigned char RENDERRequest, RENDERError;
+#define RENDERNError 5
-void
+
+static void
render_decode_req (
FD fd,
const unsigned char *buf)
@@ -75,7 +77,7 @@ render_decode_req (
}
}
-void
+static void
render_decode_reply (
FD fd,
const unsigned char *buf,
@@ -89,7 +91,7 @@ render_decode_reply (
}
}
-void
+static void
render_decode_error (
FD fd,
const unsigned char *buf)
@@ -235,6 +237,7 @@ InitializeRENDER (
const unsigned char *buf)
{
TYPE p;
+ int errcode;
RENDERRequest = (unsigned char)(buf[9]);
RENDERError = (unsigned char)(buf[11]);
@@ -325,4 +328,11 @@ InitializeRENDER (
DefineType(POINTFIXED, BUILTIN, "POINTFIXED", PrintPOINTFIXED);
DefineType(TRIANGLE, RECORD, "TRIANGLE", PrintTRIANGLE);
DefineType(TRAPEZOID, RECORD, "TRAPEZOID", PrintTRAPEZOID);
+
+ InitializeExtensionDecoder(RENDERRequest, render_decode_req,
+ render_decode_reply);
+ for (errcode = RENDERError; errcode < (RENDERError + RENDERNError) ;
+ errcode ++) {
+ InitializeExtensionErrorDecoder(errcode, render_decode_error);
+ }
}