Browse Source

Extract and re-use GetIncludePath across multiple generators.

pull/1543/head
Joao Matos 5 years ago committed by João Matos
parent
commit
e8fbdaa68a
  1. 6
      src/Generator/Generators/C/CppHeaders.cs
  2. 9
      src/Generator/Generators/C/CppSources.cs
  3. 1
      src/Generator/Generators/C/QuickJS/QuickJSModule.cs
  4. 9
      src/Generator/Generators/CLI/CLISources.cs
  5. 18
      src/Generator/Generators/CLI/CLITypeReferences.cs
  6. 17
      src/Generator/Generators/ExtensionMethods.cs

6
src/Generator/Generators/C/CppHeaders.cs

@ -96,8 +96,10 @@ namespace CppSharp.Generators.Cpp @@ -96,8 +96,10 @@ namespace CppSharp.Generators.Cpp
if (typeRefUnit != null && !typeRefUnit.IsDeclared)
continue;
if(!string.IsNullOrEmpty(include.File) && include.InHeader)
includes.Add(include.ToString());
if (!string.IsNullOrEmpty(include.File) && include.InHeader)
{
includes.Add(Context.Options.GetIncludePath(typeRefUnit));
}
}
foreach (var include in includes)

9
src/Generator/Generators/C/CppSources.cs

@ -28,14 +28,9 @@ namespace CppSharp.Generators.Cpp @@ -28,14 +28,9 @@ namespace CppSharp.Generators.Cpp
{
GenerateFilePreamble(CommentKind.BCPL);
var file = Path.GetFileNameWithoutExtension(TranslationUnit.FileName)
.Replace('\\', '/');
if (Context.Options.GenerateName != null)
file = Context.Options.GenerateName(TranslationUnit);
PushBlock(BlockKind.Includes);
WriteLine("#include \"{0}.h\"", file);
var file = Context.Options.GetIncludePath(TranslationUnit);
WriteLine($"#include \"{file}\"");
GenerateForwardReferenceHeaders();
NewLine();

1
src/Generator/Generators/C/QuickJS/QuickJSModule.cs

@ -105,6 +105,7 @@ namespace CppSharp.Generators.Cpp @@ -105,6 +105,7 @@ namespace CppSharp.Generators.Cpp
public static string GetIncludeFileName(BindingContext context,
TranslationUnit unit)
{
// TODO: Replace with GetIncludePath
string file;
if (context.Options.GenerateName != null)
file = context.Options.GenerateName(unit);

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

@ -27,14 +27,9 @@ namespace CppSharp.Generators.CLI @@ -27,14 +27,9 @@ namespace CppSharp.Generators.CLI
{
GenerateFilePreamble(CommentKind.BCPL);
var file = Path.GetFileNameWithoutExtension(TranslationUnit.FileName)
.Replace('\\', '/');
if (Context.Options.GenerateName != null)
file = Context.Options.GenerateName(TranslationUnit);
PushBlock(BlockKind.Includes);
WriteLine("#include \"{0}.h\"", file);
var file = Context.Options.GetIncludePath(TranslationUnit);
WriteLine($"#include \"{file}\"");
GenerateForwardReferenceHeaders();
NewLine();

18
src/Generator/Generators/CLI/CLITypeReferences.cs

@ -59,7 +59,7 @@ namespace CppSharp.Generators.CLI @@ -59,7 +59,7 @@ namespace CppSharp.Generators.CLI
@ref.Include = new CInclude
{
File = GetIncludePath(translationUnit),
File = DriverOptions.GetIncludePath(translationUnit),
TranslationUnit = translationUnit,
Kind = translationUnit.IsGenerated ? CInclude.IncludeKind.Quoted : CInclude.IncludeKind.Angled
};
@ -145,22 +145,6 @@ namespace CppSharp.Generators.CLI @@ -145,22 +145,6 @@ namespace CppSharp.Generators.CLI
return !unit.IsSystemHeader && unit.IsValid && !unit.Ignore;
}
private string GetIncludePath(TranslationUnit translationUnit)
{
if (!DriverOptions.UseHeaderDirectories && DriverOptions.GenerateName != null)
{
var extension = Path.GetExtension(TranslationUnit.FileName);
return $"{DriverOptions.GenerateName(translationUnit)}{extension}";
}
else if (DriverOptions.UseHeaderDirectories)
{
var path = Path.Combine(translationUnit.FileRelativeDirectory, translationUnit.FileName);
return path;
}
return translationUnit.FileName;
}
private bool IsBuiltinTypedef(Declaration decl)
{
var typedefDecl = decl as TypedefDecl;

17
src/Generator/Generators/ExtensionMethods.cs

@ -1,5 +1,6 @@ @@ -1,5 +1,6 @@
using System.Linq;
using System.Collections.Generic;
using System.IO;
using CppSharp.AST;
using CppSharp.AST.Extensions;
using CppSharp.Types;
@ -72,5 +73,21 @@ namespace CppSharp.Generators @@ -72,5 +73,21 @@ namespace CppSharp.Generators
return type.Desugar();
}
public static string GetIncludePath(this DriverOptions driverOptions, TranslationUnit translationUnit)
{
if (driverOptions.GenerateName != null)
{
var extension = Path.GetExtension(translationUnit.FileName);
return $"{driverOptions.GenerateName(translationUnit)}{extension}";
}
else if (driverOptions.UseHeaderDirectories)
{
var path = Path.Combine(translationUnit.FileRelativeDirectory, translationUnit.FileName);
return path;
}
return translationUnit.FileName;
}
}
}

Loading…
Cancel
Save