| 
| #define  | JAU_APPEND_BITSTR(U,  V,  M) | 
|   | 
| #define  | JAU_ENUM_CASE_LONG(type,  name) | 
|   | 
| #define  | JAU_ENUM_CASE_SHORT(type,  name) | 
|   | 
| #define  | JAU_ENUM_TYPE_VALUE(type,  name) | 
|   | 
| #define  | JAU_ENUM_VALUE(type,  name) | 
|   | 
| #define  | JAU_EXPAND(...) | 
|   | 
| #define  | JAU_EXPAND1(...) | 
|   | 
| #define  | JAU_EXPAND2(...) | 
|   | 
| #define  | JAU_EXPAND3(...) | 
|   | 
| #define  | JAU_EXPAND4(...) | 
|   | 
| #define  | JAU_FOR_EACH(macro,  type, ...) | 
|   | 
| #define  | JAU_FOR_EACH_AGAIN() | 
|   | 
| #define  | JAU_FOR_EACH_HELPER(macro,  type,  a1, ...) | 
|   | 
| #define  | JAU_FOR_EACH_LIST(macro,  type, ...) | 
|   | 
| #define  | JAU_FOR_EACH_LIST_AGAIN() | 
|   | 
| #define  | JAU_FOR_EACH_LIST_HELPER(macro,  type,  a1, ...) | 
|   | 
| #define  | JAU_FOR_EACH_VALUE(macro,  type,  value, ...) | 
|   | 
| #define  | JAU_FOR_EACH_VALUE_AGAIN() | 
|   | 
| #define  | JAU_FOR_EACH_VALUE_HELPER(macro,  type,  value,  a1, ...) | 
|   | 
| #define  | JAU_MAKE_BITFIELD_ENUM_STRING(type, ...) | 
|   | 
| #define  | JAU_MAKE_BITFIELD_ENUM_STRING2(type,  stype, ...) | 
|   | 
| #define  | JAU_MAKE_BITFIELD_ENUM_STRING_MEMBER(type, ...) | 
|   | 
| #define  | JAU_MAKE_ENUM_INFO(type, ...) | 
|   | 
| #define  | JAU_MAKE_ENUM_INFO2(type,  stype, ...) | 
|   | 
| #define  | JAU_MAKE_ENUM_STRING(type, ...) | 
|   | 
| #define  | JAU_MAKE_ENUM_STRING_MEMBER(type, ...) | 
|   | 
| #define  | JAU_MAKE_ENUM_STRING_SUB(type,  stype, ...) | 
|   | 
| #define  | JAU_MAKE_ENUM_STRING_SUB_MEMBER(type,  stype, ...) | 
|   | 
| #define  | JAU_PARENS   () | 
|   | 
 | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr void  | jau::enums::append_bitstr (std::string &out, E mask, E bit, const std::string &bitstr, bool &comma) | 
|   | 
| template<typename E, E V>  | 
| consteval_cxx20 const char *  | jau::enums::enum_funcname () noexcept | 
|   | clang + gcc  
  | 
|   | 
| template<auto... Vargs>  | 
| consteval_cxx20 NameTable< Vargs... >  | jau::enums::get_names () noexcept | 
|   | 
| template<typename... Args>  | 
| constexpr ValueTable< std::common_type_t< Args... >, sizeof...(Args)>  | jau::enums::get_values (Args... args) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr bool  | jau::enums::has_any (const E mask) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr bool  | jau::enums::has_any (const E mask, const E bits) noexcept | 
|   | 
| template<auto V, std::enable_if_t< std::is_enum_v< decltype(V)> > * = nullptr>  | 
| consteval_cxx20 bool  | jau::enums::is_enum () noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr bool  | jau::enums::is_set (const E mask, const E bits) noexcept | 
|   | 
| template<auto V, std::enable_if_t< std::is_enum_v< decltype(V)> > * = nullptr>  | 
| consteval_cxx20 std::string_view  | jau::enums::long_name () noexcept | 
|   | 
| template<auto V, std::enable_if_t< std::is_enum_v< decltype(V)> > * = nullptr>  | 
| consteval_cxx20 std::string_view  | jau::enums::name () noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr std::underlying_type_t< E >  | jau::enums::number (const E v) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr bool  | jau::enums::operator!= (const E lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E  | jau::enums::operator& (const E lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E &  | jau::enums::operator&= (E &lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr std::underlying_type_t< E >  | jau::enums::operator* (const E v) noexcept | 
|   | 
| template<typename enum_info_t, std::enable_if_t< is_enum_info< enum_info_t >::value > * = nullptr>  | 
| std::ostream &  | jau::enums::operator<< (std::ostream &os, const enum_info_t &v) | 
|   | 
| template<typename T, std::enable_if_t< std::is_enum_v< T > > * = nullptr>  | 
| std::ostream &  | jau::enums::operator<< (std::ostream &os, const T v) | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr bool  | jau::enums::operator== (const E lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E  | jau::enums::operator^ (const E lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E &  | jau::enums::operator^= (E &lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E  | jau::enums::operator| (const E lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E &  | jau::enums::operator|= (E &lhs, const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E  | jau::enums::operator~ (const E rhs) noexcept | 
|   | 
| template<typename E, std::enable_if_t< std::is_enum_v< E > > * = nullptr>  | 
| constexpr E &  | jau::enums::write (E &store, const E bits, bool set) noexcept | 
|   | If set==true, sets the bits in store, i.e.  
  | 
|   |