David Robillard
47a41c0d4d
git-svn-id: svn://localhost/ardour2/trunk@2791 d708f5d6-7413-0410-9779-e7cbd77b26cf
102 lines
3.3 KiB
Plaintext
102 lines
3.3 KiB
Plaintext
|
|
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:
|
|
* <tt>%__ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
|
|
* <tt>%__ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
|
|
* <tt>%__ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
|
|
* <tt>%__ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__)</tt><br>
|
|
* <tt>%__ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
|
|
* <tt>%__ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
|
|
* <tt>%__ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
|
|
')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<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
|
|
|
|
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
|
inline __ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
|
|
{ return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
|
|
|
|
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
|
inline __ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
|
|
{ return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
|
|
|
|
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
|
inline __ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__ flags)
|
|
{ return static_cast<__ENUM_CPPNAME__>(~static_cast<unsigned>(flags)); }
|
|
|
|
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
|
inline __ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
|
|
{ return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
|
|
|
|
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
|
inline __ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
|
|
{ return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
|
|
|
|
/** @ingroup __MODULE_CANONICAL__`'Enums */
|
|
inline __ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
|
|
{ return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(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
|
|
|