Skip to content

Commit f46d2b8

Browse files
committed
Added test case/example for usage with enum class
1 parent cef3add commit f46d2b8

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

nautilus/test/execution-tests/EnumFunction.hpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,20 @@
55
namespace nautilus {
66

77
enum Color { BLUE, GREEN };
8+
enum class LogLevel : uint8_t { LOG_NONE = 1, LOG_FATAL_ERROR = 2, LOG_ERROR = 3, LOG_WARNING = 4, LOG_INFO = 5, LOG_DEBUG = 6, LOG_TRACE = 7 };
9+
template <typename EnumClass>
10+
auto constexpr getLogLevel(const EnumClass value) {
11+
return static_cast<std::underlying_type_t<EnumClass>>(value);
12+
}
813

914
val<bool> handleEnum(val<Color> enumVal) {
1015
return enumVal == Color::BLUE;
1116
}
1217

18+
val<bool> handleEnumLogLevel(val<LogLevel> enumVal) {
19+
return enumVal == getLogLevel(LogLevel::LOG_DEBUG) || enumVal == getLogLevel(LogLevel::LOG_INFO);
20+
}
21+
1322
val<int32_t> isEnum(val<Color> enumVal) {
1423
if (enumVal == Color::BLUE) {
1524
return 1;
@@ -33,7 +42,38 @@ int32_t enumFunction(Color value) {
3342
}
3443
}
3544

45+
auto enumClassFunction(LogLevel level) {
46+
switch (level) {
47+
48+
case LogLevel::LOG_NONE:
49+
return 42;
50+
break;
51+
case LogLevel::LOG_FATAL_ERROR:
52+
return 42;
53+
break;
54+
case LogLevel::LOG_ERROR:
55+
return 42;
56+
break;
57+
case LogLevel::LOG_WARNING:
58+
return 42;
59+
break;
60+
case LogLevel::LOG_INFO:
61+
return 42;
62+
break;
63+
case LogLevel::LOG_DEBUG:
64+
return 42;
65+
break;
66+
case LogLevel::LOG_TRACE:
67+
return 42;
68+
break;
69+
}
70+
}
71+
3672
val<int32_t> callEnumFunction(val<Color> enumVal) {
3773
return invoke(enumFunction, enumVal);
3874
}
75+
76+
val<int32_t> callEnumClassFunction(val<LogLevel> enumClassVal) {
77+
return invoke(enumClassFunction, enumClassVal);
78+
}
3979
} // namespace nautilus

0 commit comments

Comments
 (0)