Browse Source

Extracted array type ignore code from CheckIgnoredDecls to TypeIgnoreChecker.

pull/621/merge
João Matos 10 years ago
parent
commit
1d2a572836
  1. 12
      src/Generator/Passes/CheckIgnoredDecls.cs
  2. 27
      src/Generator/Types/Types.cs

12
src/Generator/Passes/CheckIgnoredDecls.cs

@ -341,18 +341,6 @@ namespace CppSharp.Passes
return true; return true;
} }
Class @class;
var arrayType = type as ArrayType;
PrimitiveType primitive;
if (arrayType != null && arrayType.SizeType == ArrayType.ArraySize.Constant &&
!arrayType.Type.IsPrimitiveType(out primitive) &&
!arrayType.Type.Desugar().IsPointerToPrimitiveType() &&
!(arrayType.Type.Desugar().TryGetClass(out @class) && @class.IsRefType))
{
msg = "unsupported";
return true;
}
msg = null; msg = null;
return false; return false;
} }

27
src/Generator/Types/Types.cs

@ -109,6 +109,33 @@ namespace CppSharp
Ignore(); Ignore();
return base.VisitTemplateSpecializationType(template, quals); return base.VisitTemplateSpecializationType(template, quals);
} }
public override bool VisitArrayType(ArrayType array, TypeQualifiers quals)
{
TypeMap typeMap;
if (TypeMapDatabase.FindTypeMap(array, out typeMap) && typeMap.IsIgnored)
{
Ignore();
return false;
}
if (array.SizeType != ArrayType.ArraySize.Constant)
return true;
var arrayElemType = array.Type.Desugar();
Class @class;
if (arrayElemType.TryGetClass(out @class) && @class.IsRefType)
return true;
PrimitiveType primitive;
if (arrayElemType.IsPrimitiveType(out primitive) ||
arrayElemType.IsPointerToPrimitiveType())
return true;
Ignore();
return false;
}
} }
} }

Loading…
Cancel
Save