diff --git a/godot_macros.hpp b/godot_macros.hpp index a13dd65..bc1d47c 100644 --- a/godot_macros.hpp +++ b/godot_macros.hpp @@ -96,13 +96,20 @@ */ #define GDENUM(Name_, ...)\ struct Name_ {\ - enum Value {__VA_ARGS__};\ + enum Value : int {__VA_ARGS__};\ private:\ Value value{};\ public:\ static inline godot::String get_property_hint() { return godot::String(#__VA_ARGS__); }\ - inline Name_(Value value): value{value} {}\ - inline Name_(Name_ const &value): value{value.value} {}\ + inline Name_(Value value) : value{value} {}\ + inline Name_(int value) : value{value} {}\ + inline Name_(Name_ const &value) : value{value.value} {}\ + inline bool operator==(Name_ const &rhs) const { return this->value == rhs.value; }\ + inline bool operator==(Value const &rhs) const { return this->value == rhs; }\ + inline bool operator!=(Name_ const &rhs) const { return this->value != rhs.value; }\ + inline bool operator!=(Value const &rhs) const { return this->value != rhs; }\ + inline operator Value() const { return this->value; }\ + inline operator int() const { return this->value; }\ } #endif // !UTILS_GODOT_MACROS_HPP