--- /dev/null
+# $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('}')