]> git.tdb.fi Git - gldbg.git/blob - source/gldecoder.funcs.t
055a272ae3e60c60c51d7fa84ba8c58060108bd4
[gldbg.git] / source / gldecoder.funcs.t
1 # $Id$
2 ^typemap gl.tm
3 ^iomap gl.io
4 ^spec gl gl.spec
5 wl('static unsigned decode_%s(GlDecoder *dec, const char *data)', func.name)
6 wl('{')
7 wl('    unsigned pos = 0;')
8 if ret.ctype!="void":
9         wl('    %s ret;', ret.ctype)
10 for p in params:
11         wl('    %s p_%s;', p.ctype, p.name)
12 if ret.ctype!="void":
13         wl('    pos += read_%s(&ret, data+pos);', ret.io[0])
14 for p in params:
15         if p.kind=="value":
16                 wl('    pos += read_%s(&p_%s, data+pos);', p.io[0], p.name)
17         elif p.csize:
18                 wl('    pos += read_data((const void **)&p_%s, data+pos);', p.name)
19         else:
20                 wl('    pos += read_pointer((void **)&p_%s, data+pos);', p.name)
21 wl('    if(dec->%s)', func.name)
22 w('             dec->%s(dec->user_data', func.name)
23 if ret.ctype!="void":
24         w(', ret')
25 for p in params:
26         w(', p_%s', p.name)
27 wl(');')
28 wl('    return pos;')
29 wl('}')
30 :static int decode_func(GlDecoder *dec, short func, const char *data)
31 :{
32 :       switch(func)
33 :       {
34 wl('    case FUNC_%s: return decode_%s(dec, data);', func.name.upper(), func.name)
35 :       default: return -1;
36 :       }
37 :}