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;
|
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; |
Some platforms define 8-byte types like
uint64_tasunsigned long intand causes CppAst to returnCppPrimitiveTypeobjects with the wrong byte size. A possible fix would be something like:CppAst.NET/src/CppAst/CppModelBuilder.cs
Lines 1747 to 1770 in d0d3a1f