Browse Source

Added better include support.

pull/1/head
triton 13 years ago
parent
commit
cf6d27b36f
  1. 3
      src/Generator/Generators/CLI/CLIHeadersTemplate.cs
  2. 9
      src/Generator/Generators/CLI/CLISourcesTemplate.cs
  3. 21
      src/Generator/Generators/CLI/CLITextTemplate.cs

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

@ -56,6 +56,9 @@ namespace Cxxi.Generators.CLI @@ -56,6 +56,9 @@ namespace Cxxi.Generators.CLI
includes.Add(string.Format("#include \"{0}.h\"", include));
}
foreach (var include in Includes)
includes.Add(include.ToString());
foreach (var include in includes)
WriteLine(include);
}

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

@ -62,13 +62,14 @@ namespace Cxxi.Generators.CLI @@ -62,13 +62,14 @@ namespace Cxxi.Generators.CLI
if (includeName == Path.GetFileNameWithoutExtension(((TextTemplate) this).unit.FileName))
continue;
includes.Add(includeName);
includes.Add(string.Format("#include \"{0}.h\"", includeName));
}
foreach (var include in Includes)
includes.Add(include.ToString());
foreach (var include in includes)
{
WriteLine("#include \"{0}.h\"", include);
}
WriteLine(include);
}
public void GenerateDeclarations()

21
src/Generator/Generators/CLI/CLITextTemplate.cs

@ -4,6 +4,24 @@ using Cxxi.Types; @@ -4,6 +4,24 @@ using Cxxi.Types;
namespace Cxxi.Generators.CLI
{
public struct Include
{
public enum IncludeKind
{
Angled,
Quoted
}
public string File;
public IncludeKind Kind;
public override string ToString()
{
return string.Format(Kind == IncludeKind.Angled ?
"#include <{0}>" : "#include \"{0}\"", File);
}
}
public abstract class CLITextTemplate : TextTemplate
{
protected const string DefaultIndent = " ";
@ -11,10 +29,13 @@ namespace Cxxi.Generators.CLI @@ -11,10 +29,13 @@ namespace Cxxi.Generators.CLI
public ITypePrinter TypePrinter { get; set; }
public ISet<Include> Includes;
protected CLITextTemplate(Driver driver, TranslationUnit unit)
: base(driver, unit)
{
TypePrinter = new CLITypePrinter(driver.TypeDatabase, driver.Library);
Includes = new HashSet<Include>();
}
public static string SafeIdentifier(string proposedName)

Loading…
Cancel
Save