]> git.tdb.fi Git - gldbg.git/blobdiff - source/glprint.funcs.t
Unify array and reference print generation
[gldbg.git] / source / glprint.funcs.t
index 927fa366ea3afd75b9e97d52b358ea70a6a594ad..5f703e1be510ff81272d0765d53530308930923c 100644 (file)
@@ -1,7 +1,4 @@
 # $Id$
-^typemap gl.tm
-^iomap gl.io
-^spec gl gl.spec
 w('static void print_%s(void *user_data', func.name)
 if ret.ctype!="void":
        w(', %s ret', ret.ctype)
@@ -16,18 +13,33 @@ for p in params:
        if not first:
                w(', ')
        if p.kind=="value":
-               w("%s", p.io[1])
+               w('%s', p.io[1])
+       elif p.kind=="reference" and not p.io:
+               w('<ref:%s %%p>', p.type)
        else:
-               w("%%p")
+               w('%%s')
        first = False
 w(')')
 if ret.ctype!="void":
        w(' = %s', ret.io[1])
 w('"')
-for p in params:
-       w(', %s', p.name)
-if ret.ctype!="void":
-       w(', ret')
+for p in params+[ret]:
+       if p.ctype!="void":
+               if p.kind=="value":
+                       if len(p.io)>=3 and p.io[2]:
+                               w(', %s(%s, "%s")', p.io[2], p.name, p.type)
+                       else:
+                               w(', %s', p.name)
+               elif p.kind=="reference" and not p.io:
+                       w(', %s', p.name)
+               elif not p.csize:
+                       w(', print_data(%s, 0)', p.name)
+               elif p.base_ctype=="GLvoid" or p.base_ctype=="void":
+                       w(', print_data(%s, %s)', p.name, p.csize)
+               elif len(p.io)>=3 and p.io[2]:
+                       w(', print_array_described(%s, "%s", %s, sizeof(%s), %s)', p.io[2], p.type, p.name, p.base_ctype, p.csize)
+               else:
+                       w(', print_array("%s", %s, sizeof(%s), %s)', p.io[1], p.name, p.base_ctype, p.csize)
 wl(');')
 wl('}')
 :static void init_print(GlDecoder *dec)