X-Git-Url: http://git.tdb.fi/?p=gldbg.git;a=blobdiff_plain;f=genwrap.py;h=7f87c7f432cdabed585e5fe94e97e5fd63ad30ff;hp=35e343952c26f8f7be422e235b66cb1b145e1771;hb=0cdc7b50b0e7758a1660c94be664a810504a88f4;hpb=9d1825d591a7261b1cff620ba535d333352984bf diff --git a/genwrap.py b/genwrap.py index 35e3439..7f87c7f 100755 --- a/genwrap.py +++ b/genwrap.py @@ -254,17 +254,17 @@ out.write("} GlDecoder;\n") out = open(os.path.join(outdir, "gldecoder.funcs"), "w") for f in funcs: - out.write("static unsigned decode_%s(GlDecoder *dec, const char *data, unsigned len)\n{\n"%(f[0])) + out.write("static unsigned decode_%s(GlDecoder *dec, const char *data)\n{\n"%(f[0])) out.write("\tunsigned pos = 0;\n") if f[1]!="void": out.write("\t%s ret;\n"%f[1]) for p in f[2]: out.write("\t%s arg_%s;\n"%(p[1], p[0])) if f[1]!="void": - out.write("\tpos += read_%s(&ret, data+pos, len);\n"%iomap[f[1]]) + out.write("\tpos += read_%s(&ret, data+pos);\n"%iomap[f[1]]) for p in f[2]: (t, c) = getread(f, p) - out.write("\tpos += read_%s(%s&arg_%s, data+pos, len-pos);\n"%(t, c, p[0])) + out.write("\tpos += read_%s(%s&arg_%s, data+pos);\n"%(t, c, p[0])) out.write("\tif(dec->%s)\n"%f[0]) out.write("\t\tdec->%s(dec->user_data"%f[0]) if f[1]!="void": @@ -275,20 +275,16 @@ for f in funcs: out.write("\treturn pos;\n") out.write("}\n\n") -out.write("""unsigned gldecoder_decode(GlDecoder *dec, const char *data, unsigned len) +out.write("""static int decode_func(GlDecoder *dec, short func, const char *data) { - unsigned pos = 0; - short func; - - pos += read_short(&func, data, len); switch(func) { """) for f in funcs: - out.write("\t\tcase FUNC_%s: pos += decode_%s(dec, data+pos, len); break;\n"%(f[0].upper(), f[0])) + out.write("\t\tcase FUNC_%s: return decode_%s(dec, data);\n"%(f[0].upper(), f[0])) out.write(""" } - return pos; + return -1; } """) out.close()