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. 23
      src/Generator/Generators/CLI/CLITextTemplate.cs

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

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

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

@ -62,13 +62,14 @@ namespace Cxxi.Generators.CLI
if (includeName == Path.GetFileNameWithoutExtension(((TextTemplate) this).unit.FileName)) if (includeName == Path.GetFileNameWithoutExtension(((TextTemplate) this).unit.FileName))
continue; 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) foreach (var include in includes)
{ WriteLine(include);
WriteLine("#include \"{0}.h\"", include);
}
} }
public void GenerateDeclarations() public void GenerateDeclarations()

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

@ -4,17 +4,38 @@ using Cxxi.Types;
namespace Cxxi.Generators.CLI namespace Cxxi.Generators.CLI
{ {
public abstract class CLITextTemplate : TextTemplate 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 = " "; protected const string DefaultIndent = " ";
protected const uint MaxIndent = 80; protected const uint MaxIndent = 80;
public ITypePrinter TypePrinter { get; set; } public ITypePrinter TypePrinter { get; set; }
public ISet<Include> Includes;
protected CLITextTemplate(Driver driver, TranslationUnit unit) protected CLITextTemplate(Driver driver, TranslationUnit unit)
: base(driver, unit) : base(driver, unit)
{ {
TypePrinter = new CLITypePrinter(driver.TypeDatabase, driver.Library); TypePrinter = new CLITypePrinter(driver.TypeDatabase, driver.Library);
Includes = new HashSet<Include>();
} }
public static string SafeIdentifier(string proposedName) public static string SafeIdentifier(string proposedName)

Loading…
Cancel
Save