diff --git a/src/Generator/Generators/C/CppHeaders.cs b/src/Generator/Generators/C/CppHeaders.cs index 330b0c44..d818c673 100644 --- a/src/Generator/Generators/C/CppHeaders.cs +++ b/src/Generator/Generators/C/CppHeaders.cs @@ -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) diff --git a/src/Generator/Generators/C/CppSources.cs b/src/Generator/Generators/C/CppSources.cs index 523ad1d2..617d8ca2 100644 --- a/src/Generator/Generators/C/CppSources.cs +++ b/src/Generator/Generators/C/CppSources.cs @@ -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(); diff --git a/src/Generator/Generators/C/QuickJS/QuickJSModule.cs b/src/Generator/Generators/C/QuickJS/QuickJSModule.cs index d9dc5ee6..99f18d51 100644 --- a/src/Generator/Generators/C/QuickJS/QuickJSModule.cs +++ b/src/Generator/Generators/C/QuickJS/QuickJSModule.cs @@ -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); diff --git a/src/Generator/Generators/CLI/CLISources.cs b/src/Generator/Generators/CLI/CLISources.cs index 464c7245..e49c7371 100644 --- a/src/Generator/Generators/CLI/CLISources.cs +++ b/src/Generator/Generators/CLI/CLISources.cs @@ -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(); diff --git a/src/Generator/Generators/CLI/CLITypeReferences.cs b/src/Generator/Generators/CLI/CLITypeReferences.cs index 43dc21a7..db222a2a 100644 --- a/src/Generator/Generators/CLI/CLITypeReferences.cs +++ b/src/Generator/Generators/CLI/CLITypeReferences.cs @@ -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 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; diff --git a/src/Generator/Generators/ExtensionMethods.cs b/src/Generator/Generators/ExtensionMethods.cs index a6a7555f..870fb665 100644 --- a/src/Generator/Generators/ExtensionMethods.cs +++ b/src/Generator/Generators/ExtensionMethods.cs @@ -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 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; + } } }