An abstract class template Law. More...
Public Member Functions | |
bool | debug_holds () |
std::string | formula () const |
A formula for the law. | |
void | getInputInstance (input_tuple &inVars) const |
template<unsigned int index> | |
Loki::TL::TypeAt< InputTypes, index >::Result | getInputValue () const |
void | getInstance (input_tuple &inVars, output_tuple &outVars) const |
void | getOutputInstance (output_tuple &outVars) const |
template<unsigned int index> | |
Loki::TL::TypeAt< OutputTypes, index >::Result | getOutputValue () const |
bool | holds () |
std::string | name () const |
The name of the law. | |
bool | operator< (const Law &rhs) const |
bool | operator== (const Law &rhs) const |
template<unsigned int index> | |
Loki::TL::TypeAt< InputTypes, index >::Result | setInputValue (const typename Loki::TL::TypeAt< InputTypes, index >::Result &value) |
void | setInstance (const input_tuple &inVars) |
template<unsigned int index> | |
Loki::TL::TypeAt< OutputTypes, index >::Result | setOutputValue (const typename Loki::TL::TypeAt< OutputTypes, index >::Result &value) |
size_t | size () const |
std::string | typeString () const |
A string that represents the Laws type instantiation. |
An abstract class template Law.
A Law can hold for a given set of variables. A Law together with the set of input variables is an instance of the law. The evaluation of the law results in a set of output variables. Output variables hold interim and final results of the evaluation of the law.
bool boost::icl::Law< SubType, InputTypes, OutputTypes >::holds | ( | ) | [inline] |
Function holds
yields true if the law holds for a given instantiation of the input variables.
bool boost::icl::Law< SubType, InputTypes, OutputTypes >::debug_holds | ( | ) | [inline] |
Function debug_holds
is called at the end of a series of randomly generated tests on the smallest law instantiation that violates the law. Specific laws derived from class Law
shall be coded to provide informations useful for debugging.
void boost::icl::Law< SubType, InputTypes, OutputTypes >::setInstance | ( | const input_tuple & | inVars | ) | [inline] |
Set input variables for a law.
void boost::icl::Law< SubType, InputTypes, OutputTypes >::getInstance | ( | input_tuple & | inVars, | |
output_tuple & | outVars | |||
) | const [inline] |
Get input and output variables.
void boost::icl::Law< SubType, InputTypes, OutputTypes >::getInputInstance | ( | input_tuple & | inVars | ) | const [inline] |
Get input variables.
void boost::icl::Law< SubType, InputTypes, OutputTypes >::getOutputInstance | ( | output_tuple & | outVars | ) | const [inline] |
Get output variables.
size_t boost::icl::Law< SubType, InputTypes, OutputTypes >::size | ( | ) | const [inline] |
Get the size of a laws instantiation, that is a function of it's input variables. The size function is used to filter small and simple violations of laws in order to facilitate debugging.
bool boost::icl::Law< SubType, InputTypes, OutputTypes >::operator== | ( | const Law< SubType, InputTypes, OutputTypes > & | rhs | ) | const [inline] |
A size equivalence on laws.
bool boost::icl::Law< SubType, InputTypes, OutputTypes >::operator< | ( | const Law< SubType, InputTypes, OutputTypes > & | rhs | ) | const [inline] |
A size order on laws. This ordering servers filter small and simple law instances that violate the law.
std::string boost::icl::Law< SubType, InputTypes, OutputTypes >::name | ( | ) | const [inline] |
The name of the law.
std::string boost::icl::Law< SubType, InputTypes, OutputTypes >::formula | ( | ) | const [inline] |
A formula for the law.
std::string boost::icl::Law< SubType, InputTypes, OutputTypes >::typeString | ( | ) | const [inline] |
A string that represents the Laws type instantiation.
Loki::TL::TypeAt<InputTypes, index>::Result boost::icl::Law< SubType, InputTypes, OutputTypes >::setInputValue | ( | const typename Loki::TL::TypeAt< InputTypes, index >::Result & | value | ) | [inline] |
Set a value for a laws input variable, indicated by it's in the tuple of input variables
Loki::TL::TypeAt<InputTypes, index>::Result boost::icl::Law< SubType, InputTypes, OutputTypes >::getInputValue | ( | ) | const [inline] |
Get the value for a laws input variable, indicated by it's in the tuple of input variables
Loki::TL::TypeAt<OutputTypes, index>::Result boost::icl::Law< SubType, InputTypes, OutputTypes >::setOutputValue | ( | const typename Loki::TL::TypeAt< OutputTypes, index >::Result & | value | ) | [inline] |
Set a value for a laws output variable, indicated by it's in the tuple of output variables
Loki::TL::TypeAt<OutputTypes, index>::Result boost::icl::Law< SubType, InputTypes, OutputTypes >::getOutputValue | ( | ) | const [inline] |
Get the value for a laws output variable, indicated by it's in the tuple of output variables