X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fmkabc.py;h=029ebfc50485ec012e9cedb4e3b13dc91a36a59c;hb=bdad407fb79c2f7be9f3603694ebdeadc645b52d;hp=f7266ca10435f7a9c6f422d41e79caa9076b85a3;hpb=7b92dbe26556f5f2478986ebc2e700209de58595;p=swftools.git diff --git a/lib/as3/mkabc.py b/lib/as3/mkabc.py index f7266ca..029ebfc 100644 --- a/lib/as3/mkabc.py +++ b/lib/as3/mkabc.py @@ -43,7 +43,7 @@ for line in fi.readlines(): op,name,params = m.group(1),m.group(2),m.group(3) iterations=1 - if "2" in params: + if "2" in params or "s" in params: iterations=2 for iteration in range(iterations): @@ -62,13 +62,18 @@ for line in fi.readlines(): else: type,pname="multiname_t*","name" elif c == "s": - type,pname="char*","s" + if iteration==0: + type,pname="char*","name" + else: + type,pname="string_t*","s" + elif c == "N": + type,pname="namespace_t*","ns" elif c in "nubs": type,pname="int","v" elif c == "m": - type,pname="abc_method_body_t*","m" - elif c == "i": type,pname="abc_method_t*","m" + elif c == "i": + type,pname="abc_method_body_t*","m" elif c == "c": type,pname="abc_class_t*","m" elif c == "j": @@ -113,6 +118,8 @@ for line in fi.readlines(): foc.write(" self->data[%d] = (void*)(ptroff_t)%s;\n" % (i,pname)) elif(c in "IU"): foc.write(" self->data[%d] = (void*)(ptroff_t)%s;\n" % (i,pname)) + elif(c in "N"): + foc.write(" self->data[%d] = namespace_clone(%s);\n" % (i,pname)) elif(c in "f"): foc.write(" double*fp = malloc(sizeof(double));\n") foc.write(" *fp = %s;\n" % (pname)) @@ -120,7 +127,10 @@ for line in fi.readlines(): elif(c == "b"): foc.write(" self->data[%d] = (void*)(ptroff_t)%s;\n" % (i,pname)) elif(c == "s"): - foc.write(" self->data[%d] = strdup(%s);\n" % (i,pname)) + if iteration==0: + foc.write(" self->data[%d] = string_new4(%s);\n" % (i,pname)) + else: + foc.write(" self->data[%d] = string_dup3(%s);\n" % (i,pname)) elif(c == "m"): foc.write(" self->data[%d] = %s;\n" % (i,pname)) elif(c == "c"):