mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
Build type strings via TypeHelper.buildTypeName so that we handle generic types better (note: delegate types such as Action<> seem broken)
This commit is contained in:
parent
0bf8cc9aed
commit
613e11c377
@ -15,17 +15,14 @@
|
||||
<File FileName="src/cs2j/CLR/TypeRep.cs" Line="146" Column="45" />
|
||||
<File FileName="src/cs2j/CLR/cs2j.cs" Line="231" Column="56" />
|
||||
<File FileName="cs2jTest/TranslationTemplate.cs" Line="22" Column="1" />
|
||||
<File FileName="src/cs2j/TemplateUtils/TemplateFromDLL.cs" Line="182" Column="1" />
|
||||
<File FileName="src/NDesk.Options/Options.cs" Line="693" Column="29" />
|
||||
<File FileName="src/cs2jTemplateGen/Main.cs" Line="80" Column="32" />
|
||||
<File FileName="src/NDesk.Options/Options.cs" Line="261" Column="27" />
|
||||
<File FileName="src/cs2jTemplateGen/Main.cs" Line="222" Column="5" />
|
||||
<File FileName="../antlr2/Translator/Main.cs" Line="289" Column="1" />
|
||||
</Files>
|
||||
<Pads>
|
||||
<Pad Id="ProjectPad">
|
||||
<State expanded="True">
|
||||
<Node name="cs2j" expanded="True">
|
||||
<Node name="References" expanded="True" />
|
||||
<Node name="CSharp" expanded="True" />
|
||||
</Node>
|
||||
<Node name="cs2j" expanded="True" />
|
||||
<Node name="cs2jTemplateGen" expanded="True" selected="True" />
|
||||
<Node name="NDesk.Options" expanded="True" />
|
||||
</State>
|
||||
@ -34,7 +31,9 @@
|
||||
<State expanded="True" selected="True" />
|
||||
</Pad>
|
||||
<Pad Id="MonoDevelop.Debugger.WatchPad">
|
||||
<State />
|
||||
<State>
|
||||
<Value>t</Value>
|
||||
</State>
|
||||
</Pad>
|
||||
<Pad Id="ConnectionManagerPad">
|
||||
<State selected="True" />
|
||||
@ -47,7 +46,6 @@
|
||||
<MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||
<BreakpointStore>
|
||||
<Breakpoint file="/Users/keving/gitrepos/cs2j/CSharpTranslator/antlr3/src/cs2j/TestFramework/TestFramework.cs" line="27" />
|
||||
<Breakpoint file="/Users/keving/gitrepos/cs2j/CSharpTranslator/antlr3/src/cs2jTemplateGen/Main.cs" line="199" />
|
||||
</BreakpointStore>
|
||||
</MonoDevelop.Ide.DebuggingService.Breakpoints>
|
||||
<MonoDevelop.Ide.DebuggingService.PinnedWatches ctype="PinnedWatchStore" />
|
||||
|
25
CSharpTranslator/antlr3/src/cs2j/Utils/TypeHelper.cs
Normal file
25
CSharpTranslator/antlr3/src/cs2j/Utils/TypeHelper.cs
Normal file
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,6 +65,7 @@
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Utils\DirectoryHT.cs" />
|
||||
<Compile Include="Utils\Constants.cs" />
|
||||
<Compile Include="Utils\TypeHelper.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CSharp\SignatureExtracter.g" />
|
||||
@ -115,7 +116,4 @@
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="TemplateUtils\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -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()));
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.0</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{CC80B16E-0700-4AA5-ABA0-ADBCD9316952}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>cs2jTemplateGen</RootNamespace>
<AssemblyName>cs2jTemplateGen</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Externalconsole>true</Externalconsole>
<Commandlineparameters>-dll /Users/keving/gitrepos/cs2j/CSharpTranslator/antlr3/src/cs2jTemplateGen/bin/Debug/NDesk.Options.dll NDesk.Options.OptionValueType</Commandlineparameters>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Externalconsole>true</Externalconsole>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\cs2j\cs2j.csproj">
<Project>{CE961AC5-C8D4-41B3-AAF3-23FA8FAEE8AD}</Project>
<Name>cs2j</Name>
</ProjectReference>
<ProjectReference Include="..\NDesk.Options\NDesk.Options.csproj">
<Project>{E6ACBB37-AF38-45E1-B399-0CEE63809A15}</Project>
<Name>NDesk.Options</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
|
||||
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.0</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{CC80B16E-0700-4AA5-ABA0-ADBCD9316952}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>cs2jTemplateGen</RootNamespace>
<AssemblyName>cs2jTemplateGen</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Externalconsole>true</Externalconsole>
<Commandlineparameters>-dll /Users/keving/gitrepos/cs2j/CSharpTranslator/antlr3/src/cs2jTemplateGen/bin/Debug/NDesk.Options.dll NDesk.Options.OptionValueCollection</Commandlineparameters>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Externalconsole>true</Externalconsole>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\cs2j\cs2j.csproj">
<Project>{CE961AC5-C8D4-41B3-AAF3-23FA8FAEE8AD}</Project>
<Name>cs2j</Name>
</ProjectReference>
<ProjectReference Include="..\NDesk.Options\NDesk.Options.csproj">
<Project>{E6ACBB37-AF38-45E1-B399-0CEE63809A15}</Project>
<Name>NDesk.Options</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
|
Loading…
x
Reference in New Issue
Block a user