Skip to content

Commit ddd69ad

Browse files
add ResolveEnumPointerType to resolve pointer to enums (#154)
1 parent 484050b commit ddd69ad

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

clingwrapper/src/clingwrapper.cxx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,18 @@ Cppyy::TCppType_t Cppyy::ResolveEnumReferenceType(TCppType_t type) {
473473
return type;
474474
}
475475

476+
Cppyy::TCppType_t Cppyy::ResolveEnumPointerType(TCppType_t type) {
477+
if (!Cpp::IsPointerType(type))
478+
return type;
479+
480+
TCppType_t PointeeType = Cpp::GetPointeeType(type);
481+
if (Cpp::IsEnumType(PointeeType)) {
482+
TCppType_t underlying_type = Cpp::GetIntegerTypeFromEnumType(PointeeType);
483+
return Cpp::GetPointerType(underlying_type);
484+
}
485+
return type;
486+
}
487+
476488
Cppyy::TCppType_t Cppyy::ResolveType(TCppType_t type) {
477489
Cppyy::TCppType_t canonType = Cpp::GetCanonicalType(type);
478490

clingwrapper/src/cpp_cppyy.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ namespace Cppyy {
8080
RPY_EXPORTED
8181
TCppType_t ResolveEnumReferenceType(TCppType_t type);
8282
RPY_EXPORTED
83+
TCppType_t ResolveEnumPointerType(TCppType_t type);
84+
RPY_EXPORTED
8385
TCppType_t GetRealType(TCppType_t type);
8486
RPY_EXPORTED
8587
std::string ResolveEnum(TCppScope_t enum_scope);

0 commit comments

Comments
 (0)