Browse Source

Ensured symbols for system functions.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/840/head
Dimitar Dobrev 8 years ago
parent
commit
991a891563
  1. 11
      src/Generator/Passes/GenerateSymbolsPass.cs
  2. 7
      src/Generator/Passes/SymbolsCodeGenerator.cs

11
src/Generator/Passes/GenerateSymbolsPass.cs

@ -80,17 +80,12 @@ namespace CppSharp.Passes @@ -80,17 +80,12 @@ namespace CppSharp.Passes
return false;
var module = function.TranslationUnit.Module;
if (module == Options.SystemModule)
{
GetSymbolsCodeGenerator(module);
return false;
}
if (function.IsGenerated)
{
CheckTypeForSpecialization(function, function.OriginalReturnType.Type);
CheckTypeForSpecialization(function.OriginalReturnType.Type);
foreach (var parameter in function.Parameters)
CheckTypeForSpecialization(function, parameter.Type);
CheckTypeForSpecialization(parameter.Type);
}
if (!NeedsSymbol(function))
@ -100,7 +95,7 @@ namespace CppSharp.Passes @@ -100,7 +95,7 @@ namespace CppSharp.Passes
return function.Visit(symbolsCodeGenerator);
}
private void CheckTypeForSpecialization(Function function, AST.Type type)
private void CheckTypeForSpecialization(AST.Type type)
{
type = type.Desugar();
ClassTemplateSpecialization specialization;

7
src/Generator/Passes/SymbolsCodeGenerator.cs

@ -18,8 +18,11 @@ namespace CppSharp.Passes @@ -18,8 +18,11 @@ namespace CppSharp.Passes
public override void Process()
{
foreach (var header in TranslationUnit.Module.Headers)
WriteLine($"#include <{header}>");
if (TranslationUnit.Module == Options.SystemModule)
WriteLine("#include <string>");
else
foreach (var header in TranslationUnit.Module.Headers)
WriteLine($"#include <{header}>");
NewLine();
}

Loading…
Cancel
Save