dnl dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `flags', `optional_refdoc_comment', 'get_type_function_name') dnl m4_define(`_ENUM',`dnl _PUSH() m4_define(`__ENUM_CPPNAME__',`$1') m4_define(`__ENUM_CNAME__',`$2') m4_define(`__ENUM_VALUE_BASE__',`Glib::Value_$3<__NAMESPACE__::__ENUM_CPPNAME__>') _POP() dnl dnl // Define a new Doxygen group if this is the first enum in the file. dnl m4_ifdef(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__',,`dnl else m4_define(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__')dnl /** @addtogroup '__MODULE_CANONICAL__`Enums Enums and Flags */ ')dnl endif dnl dnl /**$6 * @ingroup __MODULE_CANONICAL__`'Enums m4_ifelse($3,Flags,`dnl * @par Bitwise operators: * %__ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__, __ENUM_CPPNAME__)
* %__ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__, __ENUM_CPPNAME__)
* %__ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__, __ENUM_CPPNAME__)
* %__ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__)
* %__ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)
* %__ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)
* %__ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)
')dnl endif */ enum __ENUM_CPPNAME__ { $4 }; m4_ifelse($3,Flags,`dnl /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs) { return static_cast<__ENUM_CPPNAME__>(static_cast(lhs) | static_cast(rhs)); } /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs) { return static_cast<__ENUM_CPPNAME__>(static_cast(lhs) & static_cast(rhs)); } /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs) { return static_cast<__ENUM_CPPNAME__>(static_cast(lhs) ^ static_cast(rhs)); } /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__ flags) { return static_cast<__ENUM_CPPNAME__>(~static_cast(flags)); } /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs) { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast(lhs) | static_cast(rhs))); } /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs) { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast(lhs) & static_cast(rhs))); } /** @ingroup __MODULE_CANONICAL__`'Enums */ inline __ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs) { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast(lhs) ^ static_cast(rhs))); } ')dnl endif Flags m4_ifelse($5,`NO_GTYPE',,`dnl else __NAMESPACE_END__ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class Value<__NAMESPACE__::__ENUM_CPPNAME__> : public __ENUM_VALUE_BASE__ { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ __NAMESPACE_BEGIN__ _PUSH(SECTION_SRC_GENERATED) // static GType Glib::Value<__NAMESPACE__::__ENUM_CPPNAME__>::value_type() { return _GET_TYPE_FUNC(__ENUM_CNAME__); } _POP() ')dnl endif !NO_GTYPE ')dnl enddef _ENUM