mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
Add Inherits, Slurp up nested classes
This commit is contained in:
parent
661f14d3af
commit
43c1249563
@ -603,6 +603,9 @@ namespace RusticiSoftware.Translator.CLR
|
|||||||
[XmlElementAttribute("Name")]
|
[XmlElementAttribute("Name")]
|
||||||
public string TypeName { get; set; }
|
public string TypeName { get; set; }
|
||||||
|
|
||||||
|
// [XmlElementAttribute("Name")]
|
||||||
|
// public string[] TypeName { get; set; }
|
||||||
|
|
||||||
// Path to use when resolving types
|
// Path to use when resolving types
|
||||||
[XmlElementAttribute("Use")]
|
[XmlElementAttribute("Use")]
|
||||||
public UseRepTemplate[] Uses { get; set; }
|
public UseRepTemplate[] Uses { get; set; }
|
||||||
|
@ -14,7 +14,6 @@ namespace cs2j.Template.Utils
|
|||||||
{
|
{
|
||||||
private Assembly assembly = null;
|
private Assembly assembly = null;
|
||||||
private int verbose = 0;
|
private int verbose = 0;
|
||||||
private List<string> extractTypes = new List<string>();
|
|
||||||
|
|
||||||
public TemplateFromDLL (string DLLFileName)
|
public TemplateFromDLL (string DLLFileName)
|
||||||
{
|
{
|
||||||
@ -78,8 +77,18 @@ namespace cs2j.Template.Utils
|
|||||||
private void buildInterface(InterfaceRepTemplate iface, Type t) {
|
private void buildInterface(InterfaceRepTemplate iface, Type t) {
|
||||||
|
|
||||||
iface.TypeName = TypeHelper.buildTypeName(t);
|
iface.TypeName = TypeHelper.buildTypeName(t);
|
||||||
|
|
||||||
|
List<String> bases = new List<String>();
|
||||||
|
if (t.BaseType != null)
|
||||||
|
bases.Add(TypeHelper.buildTypeName(t.BaseType));
|
||||||
|
foreach (Type iTy in t.GetInterfaces()) {
|
||||||
|
bases.Add(TypeHelper.buildTypeName(iTy));
|
||||||
|
}
|
||||||
|
|
||||||
|
iface.Inherits = bases.ToArray();
|
||||||
|
|
||||||
// Grab Methods
|
// Grab Methods
|
||||||
foreach (MethodInfo m in t.GetMethods()) {
|
foreach (MethodInfo m in t.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance)) {
|
||||||
MethodRepTemplate methRep = new MethodRepTemplate();
|
MethodRepTemplate methRep = new MethodRepTemplate();
|
||||||
methRep.Name = m.Name;
|
methRep.Name = m.Name;
|
||||||
methRep.Return = TypeHelper.buildTypeName(m.ReturnType);
|
methRep.Return = TypeHelper.buildTypeName(m.ReturnType);
|
||||||
@ -123,10 +132,16 @@ namespace cs2j.Template.Utils
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private TypeRepTemplate mkTemplate(string typeName) {
|
private IList<TypeRepTemplate> mkTemplates(string typeName) {
|
||||||
|
|
||||||
TypeRepTemplate retRep = null;
|
List<TypeRepTemplate> rets = new List<TypeRepTemplate>();
|
||||||
Type t = assembly.GetType(typeName);
|
Type t = assembly.GetType(typeName);
|
||||||
|
foreach (Type nestedTy in t.GetNestedTypes()) {
|
||||||
|
foreach(TypeRepTemplate nestedRep in mkTemplates(nestedTy.FullName)) {
|
||||||
|
rets.Add(nestedRep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TypeRepTemplate retRep = null;
|
||||||
if (t.IsClass) {
|
if (t.IsClass) {
|
||||||
ClassRepTemplate classRep = new ClassRepTemplate();
|
ClassRepTemplate classRep = new ClassRepTemplate();
|
||||||
buildClass(classRep, t);
|
buildClass(classRep, t);
|
||||||
@ -145,7 +160,8 @@ namespace cs2j.Template.Utils
|
|||||||
}
|
}
|
||||||
retRep = enumRep;
|
retRep = enumRep;
|
||||||
}
|
}
|
||||||
return retRep;
|
rets.Add(retRep);
|
||||||
|
return rets;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,23 +221,25 @@ namespace cs2j.Template.Utils
|
|||||||
foreach (string t in extractTypes) {
|
foreach (string t in extractTypes) {
|
||||||
if (templateDriver.verbose > 0)
|
if (templateDriver.verbose > 0)
|
||||||
Console.WriteLine ( "extracting {0}", t );
|
Console.WriteLine ( "extracting {0}", t );
|
||||||
TypeRepTemplate tyRep = templateDriver.mkTemplate(t);
|
IList<TypeRepTemplate> tyReps = templateDriver.mkTemplates(t);
|
||||||
TextWriter writer = null;
|
TextWriter writer = null;
|
||||||
if (dumpXmls) {
|
foreach (TypeRepTemplate tyRep in tyReps) {
|
||||||
string xmlFName = Path.Combine(xmlDir, t.Replace('.', Path.DirectorySeparatorChar) + ".xml");
|
if (dumpXmls) {
|
||||||
string xmlFDir = Path.GetDirectoryName(xmlFName);
|
string xmlFName = Path.Combine(xmlDir, tyRep.TypeName.Replace('.', Path.DirectorySeparatorChar) + ".xml");
|
||||||
if (!Directory.Exists(xmlFDir))
|
string xmlFDir = Path.GetDirectoryName(xmlFName);
|
||||||
{
|
if (!Directory.Exists(xmlFDir))
|
||||||
Directory.CreateDirectory(xmlFDir);
|
{
|
||||||
}
|
Directory.CreateDirectory(xmlFDir);
|
||||||
writer = new StreamWriter(xmlFName);
|
}
|
||||||
|
writer = new StreamWriter(xmlFName);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
writer = Console.Out;
|
||||||
|
}
|
||||||
|
templateDriver.writeXmlStream(tyRep, writer);
|
||||||
|
if (dumpXmls)
|
||||||
|
writer.Close();
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
writer = Console.Out;
|
|
||||||
}
|
|
||||||
templateDriver.writeXmlStream(tyRep, writer);
|
|
||||||
if (dumpXmls)
|
|
||||||
writer.Close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.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>
|
<?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.OptionSet</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