Browse Source

Check type maps when printing C++ for pointers

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1362/head
Dimitar Dobrev 5 years ago
parent
commit
1e1c79ddc5
  1. 6
      src/Generator.Tests/AST/TestAST.cs
  2. 3
      src/Generator/Generators/C/CppTypePrinter.cs
  3. 2
      src/Generator/Generators/CLI/CLISources.cs

6
src/Generator.Tests/AST/TestAST.cs

@ -491,7 +491,11 @@ namespace CppSharp.Generator.Tests.AST @@ -491,7 +491,11 @@ namespace CppSharp.Generator.Tests.AST
[Test]
public void TestPrintingConstPointerWithConstType()
{
var cppTypePrinter = new CppTypePrinter(Context) { ScopeKind = TypePrintScopeKind.Qualified };
var cppTypePrinter = new CppTypePrinter(Context)
{
ScopeKind = TypePrintScopeKind.Qualified,
ResolveTypeMaps = false
};
var builtin = new BuiltinType(PrimitiveType.Char);
var pointee = new QualifiedType(builtin, new TypeQualifiers { IsConst = true });
var pointer = new QualifiedType(new PointerType(pointee), new TypeQualifiers { IsConst = true });

3
src/Generator/Generators/C/CppTypePrinter.cs

@ -127,6 +127,9 @@ namespace CppSharp.Generators.C @@ -127,6 +127,9 @@ namespace CppSharp.Generators.C
public override TypePrinterResult VisitPointerType(PointerType pointer,
TypeQualifiers quals)
{
if (FindTypeMap(pointer, out TypePrinterResult result))
return result;
var pointeeType = pointer.Pointee.Visit(this, pointer.QualifiedPointee.Qualifiers);
if (pointeeType.TypeMap != null)
return pointeeType;

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

@ -1218,7 +1218,7 @@ namespace CppSharp.Generators.CLI @@ -1218,7 +1218,7 @@ namespace CppSharp.Generators.CLI
if (isRef)
{
var typePrinter = new CppTypePrinter(Context);
var typePrinter = new CppTypePrinter(Context) { ResolveTypeMaps = false };
var type = paramType.Visit(typePrinter);
if (param.IsInOut)

Loading…
Cancel
Save