]> git.tdb.fi Git - gldbg.git/blobdiff - source/gldecoder.funcs.t
Send as much of a packet as possible before calling the original function
[gldbg.git] / source / gldecoder.funcs.t
index e02c1e815277fca0833a47489ff0aff3e5fe0e74..545f8b408522a652c5c72cddd3383149f5c34d9d 100644 (file)
@@ -1,22 +1,22 @@
 # $Id$
-wl('static unsigned decode_%s(GlDecoder *dec, const char *data __attribute__((unused)))', func.name)
+:#define UNUSED __attribute__((unused))
+wl('static unsigned decode_%s(GlDecoder *dec, GlPacket *pkt UNUSED)', func.name)
 wl('{')
-wl('   unsigned pos = 0;')
 if ret.ctype!="void":
        wl('    %s ret;', ret.ctype)
 for p in params:
        wl('    %s p_%s;', p.ctype, p.name)
-if ret.ctype!="void":
-       wl('    pos += read_%s((%s *)&ret, data+pos);', ret.io[0].replace(' ', '_'), ret.io[0])
 for p in params:
        if p.kind=="value":
-               wl('    pos += read_%s((%s *)&p_%s, data+pos);', p.io[0].replace(' ', '_'), p.io[0], p.name)
+               wl('    read_%s((%s *)&p_%s, pkt);', p.io[0].replace(' ', '_'), p.io[0], p.name)
        elif p.kind=="array" and p.io and p.io[0]=="string":
-               wl('  pos += read_string_array(&p_%s, data+pos);', p.name)
+               wl('  read_string_array(&p_%s, pkt);', p.name)
        elif p.csize:
-               wl('    pos += read_data((const void **)&p_%s, data+pos);', p.name)
+               wl('    read_data((pointer *)&p_%s, pkt);', p.name)
        else:
-               wl('    pos += read_pointer((void **)&p_%s, data+pos);', p.name)
+               wl('    read_pointer((pointer *)&p_%s, pkt);', p.name)
+if ret.ctype!="void":
+       wl('    read_%s((%s *)&ret, pkt);', ret.io[0].replace(' ', '_'), ret.io[0])
 wl('   if(dec->%s)', func.name)
 w('            dec->%s(dec->user_data', func.name)
 if ret.ctype!="void":
@@ -24,13 +24,14 @@ if ret.ctype!="void":
 for p in params:
        w(', p_%s', p.name)
 wl(');')
-wl('   return pos;')
+wl('   return 0;')
 wl('}')
-:static int decode_func(GlDecoder *dec, unsigned short func, const char *data)
+:static int decode_func(GlDecoder *dec, unsigned short func, GlPacket *pkt)
 :{
 :      switch(func)
 :      {
-wl('   case FUNC_%s: return decode_%s(dec, data);', func.name.upper(), func.name)
+wl('   case FUNC_%s: decode_%s(dec, pkt); break;', func.name.upper(), func.name)
 :      default: return -1;
 :      }
+:      return 0;
 :}