Browse Source

Added an interface to represent type printing.

pull/1/head
triton 13 years ago
parent
commit
ce4de80e10
  1. 9
      src/Generator/Generators/CLI/CLIHeadersTemplate.cs
  2. 6
      src/Generator/Generators/CLI/CLIHelpers.cs
  3. 2
      src/Generator/Generators/CLI/CLISourcesTemplate.cs
  4. 7
      src/Generator/Generators/CLI/CLITypePrinter.cs
  5. 11
      src/Generator/Types/ITypePrinter.cs

9
src/Generator/Generators/CLI/CLIHeadersTemplate.cs

@ -344,7 +344,7 @@ namespace Cxxi.Generators.CLI @@ -344,7 +344,7 @@ namespace Cxxi.Generators.CLI
if (typedef.Type.IsPointerTo<FunctionType>(out function))
{
WriteLine("public {0};",
string.Format(TypeSig.ToDelegateString(function),
string.Format(TypePrinter.ToDelegateString(function),
SafeIdentifier(typedef.Name)));
return true;
}
@ -371,7 +371,7 @@ namespace Cxxi.Generators.CLI @@ -371,7 +371,7 @@ namespace Cxxi.Generators.CLI
for (int i = 0; i < function.Parameters.Count; ++i)
{
var param = function.Parameters[i];
Write("{0}", TypeSig.GetArgumentString(param));
Write("{0}", TypePrinter.GetArgumentString(param));
if (i < function.Parameters.Count - 1)
Write(", ");
}
@ -397,8 +397,11 @@ namespace Cxxi.Generators.CLI @@ -397,8 +397,11 @@ namespace Cxxi.Generators.CLI
Write("public enum struct {0}", SafeIdentifier(@enum.Name));
var typeName = TypePrinter.VisitPrimitiveType(@enum.BuiltinType.Type,
new TypeQualifiers());
if (@enum.BuiltinType.Type != PrimitiveType.Int32)
WriteLine(" : {0}", TypeSig.VisitPrimitiveType(@enum.BuiltinType.Type));
WriteLine(" : {0}", typeName);
else
NewLine();

6
src/Generator/Generators/CLI/CLIHelpers.cs

@ -12,7 +12,7 @@ namespace Cxxi.Generators.CLI @@ -12,7 +12,7 @@ namespace Cxxi.Generators.CLI
public ITypeMapDatabase TypeMapDatabase { get; set; }
public Generator Generator { get; set; }
private readonly CLITypePrinter typePrinter;
private readonly ITypePrinter typePrinter;
public CLIGenerator(Generator generator)
{
@ -30,7 +30,7 @@ namespace Cxxi.Generators.CLI @@ -30,7 +30,7 @@ namespace Cxxi.Generators.CLI
Library = Library,
Transform = Transform,
Module = unit,
TypeSig = typePrinter
TypePrinter = typePrinter
};
return template;
@ -51,8 +51,6 @@ namespace Cxxi.Generators.CLI @@ -51,8 +51,6 @@ namespace Cxxi.Generators.CLI
public bool Generate(TranslationUnit unit)
{
typePrinter.Library = Library;
var header = CreateTemplate<CLIHeadersTemplate>(unit);
WriteTemplate(header);

2
src/Generator/Generators/CLI/CLISourcesTemplate.cs

@ -202,7 +202,7 @@ namespace Cxxi.Generators.CLI @@ -202,7 +202,7 @@ namespace Cxxi.Generators.CLI
for (var i = 0; i < function.Parameters.Count; ++i)
{
var param = function.Parameters[i];
Write("{0}", TypeSig.GetArgumentString(param));
Write("{0}", TypePrinter.GetArgumentString(param));
if (i < function.Parameters.Count - 1)
Write(", ");
}

7
src/Generator/Generators/CLI/CLITypePrinter.cs

@ -3,7 +3,7 @@ using Cxxi.Types; @@ -3,7 +3,7 @@ using Cxxi.Types;
namespace Cxxi.Generators.CLI
{
public class CLITypePrinter : ITypeVisitor<string>, IDeclVisitor<string>
public class CLITypePrinter : ITypePrinter, IDeclVisitor<string>
{
public Library Library { get; set; }
private readonly ITypeMapDatabase TypeMapDatabase;
@ -183,6 +183,11 @@ namespace Cxxi.Generators.CLI @@ -183,6 +183,11 @@ namespace Cxxi.Generators.CLI
return decl.Name;
}
public string VisitPrimitiveType(PrimitiveType type, TypeQualifiers quals)
{
throw new NotImplementedException();
}
public string VisitDeclaration(Declaration decl, TypeQualifiers quals)
{
return VisitDeclaration(decl);

11
src/Generator/Types/ITypePrinter.cs

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
namespace Cxxi.Types
{
public interface ITypePrinter : ITypeVisitor<string>
{
Library Library { get; set; }
string GetArgumentsString(FunctionType function, bool hasNames);
string GetArgumentString(Parameter arg, bool hasName = true);
string ToDelegateString(FunctionType function);
}
}
Loading…
Cancel
Save