diff options
author | Alan Coopersmith <alan.coopersmith@sun.com> | 2009-08-12 14:18:25 -0700 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@sun.com> | 2009-08-12 16:44:40 -0700 |
commit | 3199c6fb39f02b36a07ef65bf4b07d6ec340944d (patch) | |
tree | 59613bdf195e6f0490f672badd881372f2de9ac9 /decode_render.c | |
parent | fccbbd6f3bdc090d2da9b32fdff2fd13679e2b78 (diff) | |
download | xscope-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.c | 18 |
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); + } } |