]> git.tdb.fi Git - gldbg.git/blobdiff - source/glwrap.funcs.t
Rewrite genwrap.py to use external templates for more flexibility
[gldbg.git] / source / glwrap.funcs.t
diff --git a/source/glwrap.funcs.t b/source/glwrap.funcs.t
new file mode 100644 (file)
index 0000000..108f329
--- /dev/null
@@ -0,0 +1,29 @@
+# $Id$
+^typemap gl.tm
+^iomap gl.io
+^spec gl gl.spec
+wl('%s APIENTRY %s(%s)', ret.ctype, func.name, ", ".join([p.ctype+" "+p.name for p in params]))
+wl('{')
+wl('   static %s (*orig)(%s);', ret.ctype, ", ".join([p.ctype for p in params]))
+if ret.ctype!='void':
+       wl('  %s ret;', ret.ctype)
+wl('   if(!orig)')
+wl('           orig = glsym("%s");', func.name)
+w('    ')
+if ret.ctype!='void':
+       w('ret = ')
+wl('orig(%s);', ", ".join([p.name for p in params]))
+wl('   begin_packet(FUNC_%s);', func.name.upper())
+if ret.ctype!='void':
+       wl('  write_%s(ret);', ret.io[0])
+for p in params:
+       if p.kind=="value":
+               wl('    write_%s(%s);', p.io[0], p.name)
+       elif p.csize:
+               wl('    write_data(%s, %s);', p.name, p.csize)
+       else:
+               wl('    write_pointer(%s);', p.name)
+wl('   send_packet();')
+if ret.ctype!='void':
+       wl('    return ret;')
+wl('}')