Browse Source

Ensured symbols for system functions.

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

11
src/Generator/Passes/GenerateSymbolsPass.cs

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

3
src/Generator/Passes/SymbolsCodeGenerator.cs

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

Loading…
Cancel
Save