X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglprint.funcs.t;h=111748e91e3f546c9e189bd70f74971d5f5134a6;hb=HEAD;hp=927fa366ea3afd75b9e97d52b358ea70a6a594ad;hpb=2e4973ec66cd8ae12d4253e3c3ad9e36a8a4bca6;p=gldbg.git diff --git a/source/glprint.funcs.t b/source/glprint.funcs.t index 927fa36..111748e 100644 --- a/source/glprint.funcs.t +++ b/source/glprint.funcs.t @@ -1,7 +1,3 @@ -# $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) @@ -12,22 +8,52 @@ wl('{') wl(' GlPrintData *gpd = (GlPrintData *)user_data;') w(' snprintf(gpd->buffer, gpd->bufsize, "%s(', func.name) first = True +pname = None for p in params: if not first: w(', ') + if p.name=="pname": + pname = p if p.kind=="value": - w("%s", p.io[1]) + if pname and p.name=="param" and p.base_ctype=="GLint": + w('%%s') + elif p.type=="TextureComponentCount": + w('%%s') + else: + w('%s', p.io[1]) + elif p.kind=="reference" and not p.io: + w('', 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 pname and p.name=="param" and p.base_ctype=="GLint": + w(', print_parameter(%s, %s)', pname.name, p.name) + elif p.type=="TextureComponentCount": + w(', print_internal_format(%s)', p.name) + elif len(p.io)>=3 and p.io[2]: + if p.io[2][0]=='(': + w(', %s%s', p.io[2], p.name) + else: + 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)