diff --git a/CSharpTranslator/antlr3/CSharpTranslator.userprefs b/CSharpTranslator/antlr3/CSharpTranslator.userprefs index c687484..77f5d92 100644 --- a/CSharpTranslator/antlr3/CSharpTranslator.userprefs +++ b/CSharpTranslator/antlr3/CSharpTranslator.userprefs @@ -15,17 +15,14 @@ - - - + + + - - - - + @@ -34,7 +31,9 @@ - + + t + @@ -47,7 +46,6 @@ - diff --git a/CSharpTranslator/antlr3/src/cs2j/Utils/TypeHelper.cs b/CSharpTranslator/antlr3/src/cs2j/Utils/TypeHelper.cs new file mode 100644 index 0000000..9dc5859 --- /dev/null +++ b/CSharpTranslator/antlr3/src/cs2j/Utils/TypeHelper.cs @@ -0,0 +1,25 @@ +using System; +using System.Text; +namespace cs2j +{ + public static class TypeHelper + { + + public static string buildTypeName(Type t) { + StringBuilder typeName = new StringBuilder(); + if (t.IsGenericType) { + typeName.Append(t.GetGenericTypeDefinition().FullName + "["); + foreach(Type a in t.GetGenericArguments()) { + typeName.Append(buildTypeName(a) + ","); + } + typeName.Remove(typeName.Length - 1,1); + typeName.Append("]"); + } + else { + typeName.Append(t.FullName); + } + return typeName.ToString(); + } + } +} + diff --git a/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj b/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj index 9ae1358..06db24c 100644 --- a/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj +++ b/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj @@ -65,6 +65,7 @@ + @@ -115,7 +116,4 @@ - - - \ No newline at end of file diff --git a/CSharpTranslator/antlr3/src/cs2jTemplateGen/Main.cs b/CSharpTranslator/antlr3/src/cs2jTemplateGen/Main.cs index e6843e9..c33408b 100644 --- a/CSharpTranslator/antlr3/src/cs2jTemplateGen/Main.cs +++ b/CSharpTranslator/antlr3/src/cs2jTemplateGen/Main.cs @@ -35,32 +35,32 @@ namespace cs2j.Template.Utils Console.WriteLine ("Enums:"); foreach (Type item in exportedTypes) { if (item.IsEnum) { - Console.WriteLine (" * " + item.FullName); + Console.WriteLine (" * " + TypeHelper.buildTypeName(item)); } } Console.WriteLine ("Interfaces:"); foreach (Type item in exportedTypes) { if (item.IsInterface) { - Console.WriteLine (" * " + item.FullName); + Console.WriteLine (" * " + TypeHelper.buildTypeName(item)); } } Console.WriteLine ("Classes:"); foreach (Type item in exportedTypes) { if (item.IsClass) { - Console.WriteLine (" * " + item.FullName); + Console.WriteLine (" * " + TypeHelper.buildTypeName(item)); } } Console.WriteLine ("Arrays:"); foreach (Type item in exportedTypes) { if (item.IsArray) { - Console.WriteLine (" * " + item.FullName); + Console.WriteLine (" * " + TypeHelper.buildTypeName(item)); } } Console.WriteLine ("Others:"); foreach (Type item in exportedTypes) { if (!item.IsEnum && !item.IsInterface && !item.IsClass && !item.IsArray) { - Console.WriteLine (" * " + item.FullName); + Console.WriteLine (" * " + TypeHelper.buildTypeName(item)); } } @@ -69,7 +69,7 @@ namespace cs2j.Template.Utils private void buildParameters(ConstructorRepTemplate c, MethodBase m) { foreach (ParameterInfo p in m.GetParameters()) { ParamRepTemplate paramRep = new ParamRepTemplate(); - paramRep.Type = p.ParameterType.FullName; + paramRep.Type = TypeHelper.buildTypeName(p.ParameterType); paramRep.Name = p.Name; c.Params.Add(paramRep); } @@ -77,12 +77,12 @@ namespace cs2j.Template.Utils private void buildInterface(InterfaceRepTemplate iface, Type t) { - iface.TypeName = t.FullName; + iface.TypeName = TypeHelper.buildTypeName(t); // Grab Methods foreach (MethodInfo m in t.GetMethods()) { MethodRepTemplate methRep = new MethodRepTemplate(); methRep.Name = m.Name; - methRep.Return = m.ReturnType.FullName; + methRep.Return = TypeHelper.buildTypeName(m.ReturnType); buildParameters(methRep, m); iface.Methods.Add(methRep); } @@ -91,7 +91,7 @@ namespace cs2j.Template.Utils foreach (PropertyInfo p in t.GetProperties()) { PropRepTemplate propRep = new PropRepTemplate(); propRep.Name = p.Name; - propRep.Type = p.PropertyType.FullName; + propRep.Type = TypeHelper.buildTypeName(p.PropertyType); iface.Properties.Add(propRep); } @@ -99,7 +99,7 @@ namespace cs2j.Template.Utils foreach (EventInfo e in t.GetEvents()) { FieldRepTemplate eventRep = new FieldRepTemplate(); eventRep.Name = e.Name; - eventRep.Type = e.EventHandlerType.FullName; + eventRep.Type = TypeHelper.buildTypeName(e.EventHandlerType); iface.Events.Add(eventRep); } } @@ -117,7 +117,7 @@ namespace cs2j.Template.Utils foreach (FieldInfo f in t.GetFields()) { FieldRepTemplate fieldRep = new FieldRepTemplate(); fieldRep.Name = f.Name; - fieldRep.Type = f.FieldType.FullName; + fieldRep.Type = TypeHelper.buildTypeName(f.FieldType); klass.Fields.Add(fieldRep); } @@ -139,7 +139,7 @@ namespace cs2j.Template.Utils } else if (t.IsEnum) { EnumRepTemplate enumRep = new EnumRepTemplate(); - enumRep.TypeName = t.FullName; + enumRep.TypeName = TypeHelper.buildTypeName(t); foreach (FieldInfo f in t.GetFields(BindingFlags.Public | BindingFlags.Static)) { enumRep.Members.Add(new EnumMemberRepTemplate(f.Name, f.GetRawConstantValue().ToString())); } diff --git a/CSharpTranslator/antlr3/src/cs2jTemplateGen/cs2jTemplateGen.csproj b/CSharpTranslator/antlr3/src/cs2jTemplateGen/cs2jTemplateGen.csproj index 3157cf2..2b8adbc 100644 --- a/CSharpTranslator/antlr3/src/cs2jTemplateGen/cs2jTemplateGen.csproj +++ b/CSharpTranslator/antlr3/src/cs2jTemplateGen/cs2jTemplateGen.csproj @@ -1 +1 @@ - Debug AnyCPU 10.0.0 2.0 {CC80B16E-0700-4AA5-ABA0-ADBCD9316952} Exe cs2jTemplateGen cs2jTemplateGen v3.5 true full false bin\Debug DEBUG prompt 4 true -dll /Users/keving/gitrepos/cs2j/CSharpTranslator/antlr3/src/cs2jTemplateGen/bin/Debug/NDesk.Options.dll NDesk.Options.OptionValueType none false bin\Release prompt 4 true {CE961AC5-C8D4-41B3-AAF3-23FA8FAEE8AD} cs2j {E6ACBB37-AF38-45E1-B399-0CEE63809A15} NDesk.Options \ No newline at end of file + Debug AnyCPU 10.0.0 2.0 {CC80B16E-0700-4AA5-ABA0-ADBCD9316952} Exe cs2jTemplateGen cs2jTemplateGen v3.5 true full false bin\Debug DEBUG prompt 4 true -dll /Users/keving/gitrepos/cs2j/CSharpTranslator/antlr3/src/cs2jTemplateGen/bin/Debug/NDesk.Options.dll NDesk.Options.OptionValueCollection none false bin\Release prompt 4 true {CE961AC5-C8D4-41B3-AAF3-23FA8FAEE8AD} cs2j {E6ACBB37-AF38-45E1-B399-0CEE63809A15} NDesk.Options \ No newline at end of file