Empirical
Classes | Namespaces | Macros | Functions | Variables
attrs.h File Reference
#include <algorithm>
#include <iostream>
#include <iterator>
#include <memory>
#include <utility>
#include <vector>
#include "meta/TypePack.h"
#include "meta/type_traits.h"

Go to the source code of this file.

Classes

struct  emp::tools::value_tag
 
struct  emp::tools::is_same_attribute< V1, V2 >
 
struct  emp::tools::is_attribute_value< T >
 
class  emp::tools::Attrs< T >
 
struct  emp::tools::is_attributes_pack< T >
 
struct  emp::tools::is_attributes_pack< Attrs< U... > >
 
struct  emp::tools::__impl_has_attr::has_attribute< Pack, Attr >
 
struct  emp::tools::has_attribute< Pack, Attr >
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_attribute_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::call_or_get_attribute_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::map_or_else_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_attribute_or_else_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_or_else_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_or_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_attribute_or_get_attribute_in_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::get_or_get_in_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::set_t
 
struct  emp::tools::__impl_attr_base::AttrBase< Attr, Value >::make_t
 
class  emp::tools::__attrs_impl::AttrsParent< T >
 
struct  emp::tools::__attrs_impl::AttrsParent< T >::args_tag
 
struct  emp::tools::__attrs_impl::AttrsParent< T >::copy_tag
 
struct  emp::tools::__attrs_impl::AttrsParent< T >::move_tag
 
struct  emp::tools::__attrs_impl::AttrsParent< T >::__attrs_impl_constructor_detector< U >
 
struct  emp::tools::__attrs_impl::wrapper< class >
 
struct  emp::tools::__impl_attrs_reduce::AttrsIter< typename >
 
struct  emp::tools::__impl_attrs_reduce::AttrsIter< __impl_variadics_type_traits::pack<> >
 
struct  emp::tools::__impl_attrs_reduce::AttrsIter< __impl_variadics_type_traits::pack< U > >
 
struct  emp::tools::__impl_attrs_reduce::AttrsIter< __impl_variadics_type_traits::pack< U0, U1, U... > >
 
class  emp::tools::Attrs< T >
 
struct  emp::tools::__attrs_impl::print_attrs_tag<... >
 

Namespaces

 emp
 If we are in emscripten, make sure to include the header.
 
 emp::tools
 
 emp::tools::__impl_has_attr
 
 emp::tools::__impl_attr_base
 
 emp::tools::__attrs_impl
 
 emp::tools::__impl_attrs_reduce
 
 emp::tools::__impl_attrs_merge
 

Macros

#define DEFINE_ATTR(NAME)
 

Functions

template<typename... T>
constexpr Attrs< std::decay_t< T >... > emp::tools::MakeAttrs (T &&...props)
 
template<typename I , typename R , typename... A>
constexpr auto emp::tools::MergeReduce (I &&init, R &&reducer, A &&...attrs)
 
template<typename I , typename R , typename... A>
constexpr auto emp::tools::Reduce (I &&init, R &&reducer, A &&...attrs)
 
template<typename F , typename... A>
constexpr void emp::tools::MergeForeach (F &&callback, A &&...attrs)
 
template<typename F , typename... A>
constexpr void emp::tools::Foreach (F &&callback, A &&...attrs)
 
template<typename... U>
constexpr auto emp::tools::Merge (U &&...packs) -> decltype(MergeReduce(Attrs<>
 
template<class... T, class H >
void emp::tools::__attrs_impl::PrintAttrs (std::ostream &out, const Attrs< T... > &attrs, const print_attrs_tag< H > &)
 
template<class... T, class H0 , class H1 , class... U>
void emp::tools::__attrs_impl::PrintAttrs (std::ostream &out, const Attrs< T... > &attrs, const print_attrs_tag< H0, H1, U... > &)
 
template<class H , class... T>
std::ostream & emp::tools::operator<< (std::ostream &out, const Attrs< H, T... > &attrs)
 
std::ostream & emp::tools::operator<< (std::ostream &out, const Attrs<> &attrs)
 

Variables

template<typename T >
constexpr bool emp::tools::is_attribute_value_v = is_attribute_value<T>::value
 
template<typename T >
constexpr bool emp::tools::is_attributes_pack_v = is_attributes_pack<T>::value
 
template<typename Pack , typename Attr >
constexpr bool emp::tools::has_attribute_v = has_attribute<Pack, Attr>::value
 
struct {
emp::tools::__impl_attrs_merge::attrs_merge
 

Macro Definition Documentation

#define DEFINE_ATTR (   NAME)