Browse Source

Added to binder option NoGenIncludeDirs that contains a list of non generated include dirs.

pull/224/head
marcos henrich 12 years ago committed by triton
parent
commit
4574b898de
  1. 9
      src/Generator/Driver.cs
  2. 4
      src/Generator/Options.cs
  3. 17
      src/Generator/Passes/CleanUnitPass.cs

9
src/Generator/Driver.cs

@ -70,6 +70,9 @@ namespace CppSharp @@ -70,6 +70,9 @@ namespace CppSharp
for (var i = 0; i < options.LibraryDirs.Count; i++)
options.LibraryDirs[i] = Path.GetFullPath(options.LibraryDirs[i]);
#endif
if (options.NoGenIncludeDirs != null)
for (var i = 0; i < options.NoGenIncludeDirs.Count; i++)
options.NoGenIncludeDirs[i] = Path.GetFullPath(options.NoGenIncludeDirs[i]);
if (string.IsNullOrWhiteSpace(options.OutputNamespace))
options.OutputNamespace = options.LibraryName;
@ -78,6 +81,12 @@ namespace CppSharp @@ -78,6 +81,12 @@ namespace CppSharp
public void Setup()
{
ValidateOptions(Options);
if (Options.NoGenIncludeDirs != null)
foreach (var incDir in Options.NoGenIncludeDirs)
if (!Options.IncludeDirs.Contains(incDir))
Options.IncludeDirs.Add(incDir);
TypeDatabase.SetupTypeMaps();
Generator = CreateGeneratorFromKind(Options.GeneratorKind);
}

4
src/Generator/Options.cs

@ -4,7 +4,6 @@ using System.IO; @@ -4,7 +4,6 @@ using System.IO;
using System.Text;
using CppSharp.AST;
using CppSharp.Generators;
#if !OLD_PARSER
using CppSharp.Parser;
using CppAbi = CppSharp.Parser.AST.CppAbi;
@ -97,6 +96,9 @@ namespace CppSharp @@ -97,6 +96,9 @@ namespace CppSharp
public bool GenerateInternalImports;
public bool GenerateClassMarshals;
//List of include directories that are used but not generated
public List<string> NoGenIncludeDirs;
/// <summary>
/// Enable this option to enable generation of finalizers.
/// Works in both CLI and C# backends.

17
src/Generator/Passes/CleanUnitPass.cs

@ -13,6 +13,9 @@ namespace CppSharp.Passes @@ -13,6 +13,9 @@ namespace CppSharp.Passes
public override bool VisitTranslationUnit(TranslationUnit unit)
{
if (IsTranslationGenerated(unit))
unit.IsGenerated = false;
// Try to get an include path that works from the original include
// directories paths.
@ -49,5 +52,19 @@ namespace CppSharp.Passes @@ -49,5 +52,19 @@ namespace CppSharp.Passes
return includePath.Replace('\\', '/');
}
bool IsTranslationGenerated(TranslationUnit translationUnit)
{
if (DriverOptions.NoGenIncludeDirs == null)
return false;
foreach (var path in DriverOptions.NoGenIncludeDirs)
{
if (translationUnit.FilePath.StartsWith(path))
return true;
}
return false;
}
}
}
Loading…
Cancel
Save