attrs.hpp
TODO.
Defines
-
DEFINE_ATTR(NAME)
-
namespace tools
Functions
-
template<typename ...T>
constexpr Attrs<std::decay_t<T>...> MakeAttrs(T&&... props) An alternative syntax for creating attribute packs. Takes any number of attributes and returns a pack containing each of those attributes.
-
template<typename I, typename R, typename ...A>
constexpr auto MergeReduce(I &&init, R &&reducer, A&&... attrs)
-
template<typename I, typename R, typename ...A>
constexpr auto Reduce(I &&init, R &&reducer, A&&... attrs)
Variables
-
template<typename T>
constexpr bool is_attribute_value_v = is_attribute_value<T>::value
-
template<typename T>
constexpr bool is_attributes_pack_v = is_attributes_pack<T>::value
-
template<typename Pack, typename Attr>
constexpr bool has_attribute_v = has_attribute<Pack, Attr>::value
-
template<typename ...T>
class Attrs - #include <attrs.hpp>
Public Functions
-
inline constexpr Attrs()
-
template<class ...U>
inline constexpr auto operator()(U&&... args) & Provide a call operator for attribute packs. This will attempt to call each member of the attribute pack with the given arguments, and maps the result of that call into a new parameter pack as the same attribute. If one of the members of the pack cannot be called with the given pack, then it is put into the new pack unchanged. Mostly, this is meant to allow the opengl plotting library to do mapping operations
-
template<class ...U>
inline constexpr bool operator==(const Attrs<U...> &other) const Attribute packs support equals and not equals, but are not orderable, as the members are not considered to be ordered from the user’s perspective.
-
template<typename I, typename F>
inline constexpr auto AttributeReduce(I &&init, F &&callback) const &
Private Static Functions
-
struct eq_reducer
-
template<bool Last, typename A>
struct GetAttr
-
inline constexpr Attrs()
-
template<typename Pack, typename Attr>
struct has_attribute : public __impl_has_attr::has_attribute::type<Pack, Attr> - #include <attrs.hpp>
-
template<typename T>
struct is_attribute_value : public std::is_base_of<value_tag, T> - #include <attrs.hpp>
-
template<typename T>
struct is_attributes_pack : public false_type - #include <attrs.hpp>
-
template<typename ...U>
struct is_attributes_pack<Attrs<U...>> : public true_type - #include <attrs.hpp>
-
template<typename V1, typename V2>
struct is_same_attribute : public std::is_same<V1::attribute_t, V2::attribute_t> - #include <attrs.hpp>
-
struct value_tag
- #include <attrs.hpp>
-
template<typename ...T>