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
[Test] [Test]
public void TestPrintingConstPointerWithConstType() 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 builtin = new BuiltinType(PrimitiveType.Char);
var pointee = new QualifiedType(builtin, new TypeQualifiers { IsConst = true }); var pointee = new QualifiedType(builtin, new TypeQualifiers { IsConst = true });
var pointer = new QualifiedType(new PointerType(pointee), 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
public override TypePrinterResult VisitPointerType(PointerType pointer, public override TypePrinterResult VisitPointerType(PointerType pointer,
TypeQualifiers quals) TypeQualifiers quals)
{ {
if (FindTypeMap(pointer, out TypePrinterResult result))
return result;
var pointeeType = pointer.Pointee.Visit(this, pointer.QualifiedPointee.Qualifiers); var pointeeType = pointer.Pointee.Visit(this, pointer.QualifiedPointee.Qualifiers);
if (pointeeType.TypeMap != null) if (pointeeType.TypeMap != null)
return pointeeType; return pointeeType;

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

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

Loading…
Cancel
Save