Skip to content

Commit 478e65c

Browse files
fix type resolution of reference to enums (#144)
1 parent 5ecf728 commit 478e65c

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

clingwrapper/src/clingwrapper.cxx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,17 @@ std::string Cppyy::ResolveName(const std::string& name) {
460460
// return "const " + TClassEdit::ShortType(tclean.c_str(), 2);
461461
// }
462462

463+
Cppyy::TCppType_t Cppyy::ResolveEnumReferenceType(TCppType_t type) {
464+
if (!Cpp::IsLValueReferenceType(type))
465+
return type;
466+
467+
TCppType_t nonReferenceType = Cpp::GetNonReferenceType(type);
468+
if (Cpp::IsEnumType(nonReferenceType)) {
469+
TCppType_t underlying_type = Cpp::GetIntegerTypeFromEnumType(nonReferenceType);
470+
return Cpp::GetReferencedType(underlying_type);
471+
}
472+
return type;
473+
}
463474

464475
Cppyy::TCppType_t Cppyy::ResolveType(TCppType_t type) {
465476
Cppyy::TCppType_t canonType = Cpp::GetCanonicalType(type);

clingwrapper/src/cpp_cppyy.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ namespace Cppyy {
7878
RPY_EXPORTED
7979
TCppType_t ResolveType(TCppType_t cppitem_name);
8080
RPY_EXPORTED
81+
TCppType_t ResolveEnumReferenceType(TCppType_t type);
82+
RPY_EXPORTED
8183
TCppType_t GetRealType(TCppType_t type);
8284
RPY_EXPORTED
8385
std::string ResolveEnum(TCppScope_t enum_scope);

0 commit comments

Comments
 (0)