Skip to content

Commit 724353f

Browse files
treat int8_t and uint8_t as special cases
resolving them yields `char`, but we want to treat them as `int`s therefore we treat them as special cases
1 parent e63b71d commit 724353f

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

clingwrapper/src/clingwrapper.cxx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,15 @@ Cppyy::TCppType_t Cppyy::ResolveEnumPointerType(TCppType_t type) {
488488
Cppyy::TCppType_t Cppyy::ResolveType(TCppType_t type) {
489489
if (!type) return type;
490490

491+
TCppType_t check_int_typedefs = type;
492+
if (Cpp::IsPointerType(check_int_typedefs))
493+
check_int_typedefs = Cpp::GetPointeeType(check_int_typedefs);
494+
if (Cpp::IsReferenceType(check_int_typedefs))
495+
check_int_typedefs = Cpp::GetReferencedType(check_int_typedefs);
496+
497+
if (Cpp::GetTypeAsString(check_int_typedefs) == "int8_t" || Cpp::GetTypeAsString(check_int_typedefs) == "uint8_t")
498+
return type;
499+
491500
Cppyy::TCppType_t canonType = Cpp::GetCanonicalType(type);
492501

493502
if (Cpp::IsEnumType(canonType)) {
@@ -502,6 +511,14 @@ Cppyy::TCppType_t Cppyy::ResolveType(TCppType_t type) {
502511
}
503512

504513
Cppyy::TCppType_t Cppyy::GetRealType(TCppType_t type) {
514+
TCppType_t check_int_typedefs = type;
515+
if (Cpp::IsPointerType(check_int_typedefs))
516+
check_int_typedefs = Cpp::GetPointeeType(check_int_typedefs);
517+
if (Cpp::IsReferenceType(check_int_typedefs))
518+
check_int_typedefs = Cpp::GetReferencedType(check_int_typedefs);
519+
520+
if (Cpp::GetTypeAsString(check_int_typedefs) == "int8_t" || Cpp::GetTypeAsString(check_int_typedefs) == "uint8_t")
521+
return check_int_typedefs;
505522
return Cpp::GetUnderlyingType(type);
506523
}
507524

0 commit comments

Comments
 (0)