]> git.tdb.fi Git - gldbg.git/blobdiff - genwrap.py
Packetize the command stream for more robustness
[gldbg.git] / genwrap.py
index 35e343952c26f8f7be422e235b66cb1b145e1771..7f87c7f432cdabed585e5fe94e97e5fd63ad30ff 100755 (executable)
@@ -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()