Main namespace for Catsfoot. More...
Namespaces | |
namespace | details |
Implementation details for Catsfoot. | |
Classes | |
struct | axiom_failure |
Exception class for axiom failure. More... | |
struct | verified |
User type traits for validating models. More... | |
struct | concept_list |
List representation of several concepts. More... | |
struct | eval |
Predicate evaluating models and predicates. More... | |
struct | class_assert_concept |
Checks that a concept is. More... | |
struct | equality |
Check whether T is comparable to U by ==. More... | |
struct | printable |
Check whether U is printable on a stream T. More... | |
struct | is_same |
Check whether T and U are the same type. More... | |
struct | equivalence |
Generic concept for equivalence relation. More... | |
struct | equivalence_eq |
Concept for equivalence relation with operator==. More... | |
struct | verified< equivalence_eq< T > > |
If == is an equivalence relation to T, then T is equivalence_eq. More... | |
struct | verified< equivalence< T, op_eq > > |
If T is equivalence_eq, then == is an equivalence relation to T. More... | |
struct | congruence |
Check whether an operation sees equality as congruence relation. More... | |
struct | congruence_eq |
Concept for congruence relation with operator==. More... | |
struct | verified< congruence_eq< T, Args...> > |
When T is a congruence for ==, then T is a congruence_eq. More... | |
struct | verified< congruence< op_eq, T, Args...> > |
When T is a congruence_eq, then T is a congruence for ==. More... | |
struct | concept |
Base marker for concepts. More... | |
struct | auto_concept |
Base marker for auto concepts. More... | |
struct | is_auto_concept |
Checks if T is an auto concept model. More... | |
struct | is_concept |
Checks if T is a concept model. More... | |
struct | product |
struct | simple_product |
struct | verified< product< Type, constructor_wrap< Type >, Projections...> > |
struct | selector |
Constructible type used to select a type for overloaded functions. More... | |
struct | container |
struct | generator_for |
Whether T is a generator of Type. More... | |
struct | default_generator |
Generator that build default constructors. More... | |
struct | list_data_generator |
Generator using lists of data provided by the user. More... | |
struct | pick_functor |
struct | term_generator_builder |
Builds random term generators. More... | |
struct | undefined_return |
Return type used in case of error for is_callable. More... | |
struct | is_callable |
Default case: callable without parameters? More... | |
struct | is_callable< T(U...)> |
Tells whether T is callable with (U...) More... | |
struct | is_callable< void(U...)> |
Void is a special type that may induce extra error messages. More... | |
struct | is_constructible |
Undefined. More... | |
struct | is_constructible< T(U...)> |
Tells whether T is constructible with {U...}. More... | |
struct | is_constructible< void(U...)> |
Void is a special type that may induce extra error messages. More... | |
struct | undefined_member_type |
Type used return by has_member_... in case member does not exist. More... | |
struct | build_comparer |
This is class is used to build an black box equality engine. More... | |
struct | constant |
Functor returning and integral constant. More... | |
struct | wrapped |
Get the return type of the wrap function. More... | |
struct | disamb |
Disambiguates an overloaded functions address. More... | |
struct | disamb_const |
Disambiguates an overloaded const member. More... | |
struct | constructor_wrap |
Wraps constructors. More... | |
struct | op_eq |
Wraps operator==. More... | |
struct | op_neq |
Wraps operator!=. More... | |
struct | op_plus |
Wraps operator+. More... | |
struct | op_times |
Wraps operator*. More... | |
struct | op_lsh |
Wraps operator<<. More... | |
struct | op_lt |
Wraps operator<. More... | |
struct | op_inc |
Wraps operator++. More... | |
struct | op_post_inc |
Wraps operator++(T&, int) More... | |
struct | op_star |
Wraps operator*. More... | |
struct | wrapped_constructor |
Wraps constructor T. More... | |
Functions | |
EXTERN bool | check_unverified (std::ostream &s=std::cerr) |
Tells whether some conditional axioms where never reached. | |
template<typename T > | |
void | assert_concept (const T &) |
Assert that the concept T holds. | |
template<typename Rel , typename... E, typename Index = std::integral_constant<size_t, 0>, typename = typename std::enable_if <(Index::value == sizeof...(E))>::type, typename = void> | |
bool | tuple_rel (Rel, const std::tuple< E...> &, const std::tuple< E...> &, Index=Index()) |
Check that a relation holds for all elements on a pair of tuples. | |
template<typename Rel , typename... E, typename Index = std::integral_constant<size_t, 0>, typename > | |
bool | tuple_rel (Rel rel, const std::tuple< E...> &a, const std::tuple< E...> &b, Index=Index()) |
Check that a relation holds for all elements on a pair of tuples. | |
template<typename... T> | |
details::generator_choose < typename std::decay< T > ::type...> | choose (T &&...t) |
Combines generators.Picks the left-most generator capable or generating the requested data set. | |
DEF_MEMBER_WRAPPER (begin) | |
DEF_MEMBER_WRAPPER (end) | |
DEF_MEMBER_WRAPPER (get) | |
template<typename T , typename Generator > | |
std::function< T()> | pick (Generator &g) |
template<typename Generator > | |
details::tuple_generator < typename std::decay < Generator >::type > | tuple_gen (Generator &&g) |
Builds a tuple generator from element generators. | |
template<typename Model , typename Generator , typename Stream = decltype(std::cerr)> | |
bool | test_all (Generator &g, Stream &s=std::cerr) |
Tests all axioms of model Model and its sub-models. | |
template<typename Generator , typename... T, typename Stream = decltype(std::cerr)> | |
bool | test (Generator &g, void f(T...), std::string name="<unknown>", Stream &s=std::cerr) |
This will call f with parameters from g. | |
template<typename Fun , typename... Params> | |
bool | catch_errors (Fun f, Params &&...values) |
This will call f with the parameters and catch any axiom error. | |
template<typename Op , typename Tuple > | |
details::call_with_ret< Op, Tuple >::type | call_with (Op &&op, Tuple &&args) |
Calls a function with arguments from a std::tuple. | |
template<typename Ret , typename... Args> | |
std::function< Ret(Args...)> | wrap (Ret(*f)(Args...)) |
Wraps a function. | |
template<typename T > | |
std::function< T > | wrap (const std::function< T > &f) |
Forwards function. | |
template<typename T > | |
std::function< T > | wrap (std::function< T > &&f) |
Forwards function. | |
template<typename T > | |
std::function< T > | constructor () |
Wraps a constructor. | |
template<typename T > | |
details::remove_side_effect_helper < typename std::decay< T > ::type > | remove_side_effect (T t) |
Variables | |
std::tuple< typename std::decay< typename is_callable< const Functions(const Parameter &)>::result_type > ::type...> | call_tuple (const std::tuple< Functions...> &functions, const Parameter ¶m) |
Calls a tuple of functions with an argument. | |
std::function< Ret(T &, Args...)> | wrap (Ret(T::*f)(Args...)) |
Wraps a non-const member function. |
Main namespace for Catsfoot.
void catsfoot::assert_concept | ( | const T & | ) |
details::call_with_ret<Op, Tuple>::type catsfoot::call_with | ( | Op && | op, |
Tuple && | args | ||
) |
Calls a function with arguments from a std::tuple.
op | A function. |
args | The tuple of arguments |
bool catsfoot::catch_errors | ( | Fun | f, |
Params &&... | values | ||
) |
This will call f with the parameters and catch any axiom error.
It is a shortcut for
try { f(values...); } catch (axiom_failure af) { std::cerr << /*...*/; }
std::function<T> catsfoot::constructor | ( | ) |
Wraps a constructor.
T | Signature where return type is the class. |
std::tuple<typename std::decay <typename is_callable <const Functions(const Parameter&)>::result_type>::type...> catsfoot::call_tuple(const std::tuple< Functions...> &functions, const Parameter ¶m) |
Calls a tuple of functions with an argument.
functions | The functions |
param | The parameter for calling the function |
std::function< Ret(const T &, Args...)> catsfoot::wrap |
Wraps a non-const member function.
Wraps a const member function.
We "functionalize" the method here.