-
-
Notifications
You must be signed in to change notification settings - Fork 75
Open
@BeanCheeseBurrito
Description
Some platforms define 8-byte types like uint64_t as unsigned long int and causes CppAst to return CppPrimitiveType objects with the wrong byte size. A possible fix would be something like:
// Old
case CXTypeKind.CXType_ULong:
return CppPrimitiveType.UnsignedInt;
// New
case CXTypeKind.CXType_ULong:
return type.SizeOf == 8 ? CppPrimitiveType.UnsignedLongLong : CppPrimitiveType.UnsignedInt;
CppAst.NET/src/CppAst/CppModelBuilder.cs
Lines 1747 to 1770 in d0d3a1f
private CppType GetCppTypeInternal(CXCursor cursor, CXType type, CXCursor parent, void* data)
{
switch (type.kind)
{
case CXTypeKind.CXType_Void:
return CppPrimitiveType.Void;
case CXTypeKind.CXType_Bool:
return CppPrimitiveType.Bool;
case CXTypeKind.CXType_UChar:
return CppPrimitiveType.UnsignedChar;
case CXTypeKind.CXType_UShort:
return CppPrimitiveType.UnsignedShort;
case CXTypeKind.CXType_UInt:
return CppPrimitiveType.UnsignedInt;
case CXTypeKind.CXType_ULong:
return CppPrimitiveType.UnsignedInt;
case CXTypeKind.CXType_ULongLong:
return CppPrimitiveType.UnsignedLongLong;