", line)
tgt.write(line);
elif (not in_class and (s.startswith("{") or s.startswith("}"))) or s.startswith("[") or s.startswith("#"):
- # print "Skipping: " + s;
+ # tgt.write("// Skipping: " + s)
pass
elif line == "}\n":
pass
else:
# indent = line.find(s)
+ # tgt.write("// LINE: " + line)
if line.find(": base") != -1:
- line = re.sub(": base\((?P[\w,.\(\) ]*)\)", "{ super(\g
);", line)
- if line.find("; {") != -1:
- line = line.replace("; {", ";")
+ line = re.sub(": base\((?P
[^\{]*)\)", "{ super(\g
);", line)
+ line = line[4:]
+ obraces = line.count("{")
+ cbraces = line.count("}")
+ mbraces = obraces - cbraces
+ # tgt.write("// obraces = " + str(obraces) + "\n")
+ if obraces == 1:
+ skip_brace = 1
else:
- skip_brace = 1
- if s.startswith("public"):
+ for i in range(0, mbraces):
+ line = line.replace("\n", "}\n")
+ if s.find("(") != -1:
line = re.sub(" = [\w.]+(?P[,;\)])", "\g", line)
a = type_replace(line)
a = re.sub("(?P[\(, ])params ", "\g", a)
@@ -253,25 +310,43 @@ def translate(filename):
a = rename_native(a)
a = re.sub("~\w+\(\)", "protected void finalize()", a)
a = re.sub("foreach\s*\((?P[\w <>,]+)\s+(?P\w+)\s+in\s+(?P\w+)\)",
- "for (\g.Iterator \g = \g.iterator(); \g.hasNext(); )", a)
+ "for (Iterator \g = \g.iterator(); \g.hasNext(); )", a)
a = a.replace("readonly ", "")
a = a.replace("const ", "final ")
- a = a.replace("ToString", "toString")
+ a = a.replace("String ToString", "String toString")
a = a.replace("internal ", "")
a = a.replace("new static", "static")
a = a.replace("new public", "public")
a = a.replace("override ", "")
a = a.replace("virtual ", "")
a = a.replace("o as AST", "(AST) o")
+ a = a.replace("o as Sort", "(Sort) o")
a = a.replace("other as AST", "(AST) other")
a = a.replace("o as FuncDecl", "(FuncDecl) o")
+ a = a.replace("IntPtr obj", "long obj")
+ a = a.replace("IntPtr o", "long o")
+ a = a.replace("new long()", "0")
+ a = a.replace("long.Zero", "0")
+ a = a.replace("object o", "Object o")
+ a = a.replace("object other", "Object other")
a = a.replace("IntPtr res = IntPtr.Zero;", "Native.IntPtr res = new Native.IntPtr();")
a = a.replace("out res", "res")
+ a = a.replace("GC.ReRegisterForFinalize(m_ctx);", "")
+ a = a.replace("GC.SuppressFinalize(this);", "")
+ if had_ulong_res == 0 and a.find("ulong res = 0") != -1:
+ a = a.replace("ulong res = 0;", "LongPtr res = new LongPtr();")
+ elif had_ulong_res == 1:
+ a = a.replace("ref res)", "res)")
+ if a.find("return res;") != -1:
+ a = a.replace("return res;", "return res.value;")
+ had_ulong_res = 0
a = a.replace("lock (", "synchronized (")
if in_static_class:
a = a.replace("static", "")
a = re.sub("ref (?P\w+)", "\g", a)
subst_getters(a, getters)
+ a = re.sub("NativeObject = (?P.*);", "setNativeObject(\g);", a)
+ a = replace_generals(a)
tgt.write(a)
tgt.close()