limal::ValueCheck Class Reference

Expression chain for checking values. More...

#include <ValueCheck.hpp>

Inheritance diagram for limal::ValueCheck:
limal::ValueCheckBase

List of all members.

Public Member Functions

 ValueCheck ()
 ValueCheck (ValueCheckBase *check)
ValueCheckoperator= (ValueCheckBase *check)
 ValueCheck (const ValueCheck &ref)
ValueCheckoperator= (const ValueCheck &ref)
virtual ~ValueCheck ()
virtual bool isValid (const BLOCXX_NAMESPACE::String &value) const
virtual BLOCXX_NAMESPACE::String explain (const BLOCXX_NAMESPACE::String &value) const
ValueCheckAnd (const ValueCheck &ref)
ValueCheckAnd (ValueCheckBase *check)
ValueCheckOr (const ValueCheck &ref)
ValueCheckOr (ValueCheckBase *check)
ValueCheckNot ()

Private Types

enum  ECheckOp { E_AND, E_OR }

Private Member Functions

 ValueCheck (const ValueCheck &ref, ECheckOp op)
void incRCnt (ValueCheckBase *ptr)
void delRCnt (ValueCheckBase *ptr)

Private Attributes

ECheckOp m_cop
bool m_neg
ValueCheckBasem_self
BLOCXX_NAMESPACE::List
< ValueCheck
m_list

Detailed Description

Expression chain for checking values.

The ValueCheck class allows to construct a simple expression. It contains one or more single checks derived from ValueCheckBase or also sub-expressions, that are combined with And, Or and Not operators.

The check can be evaluated for a value using the isValid() method, showed as string with the explain() method and of course stored in a variable and used to check values multiple times.

        //
        // Construct a check:
        //
        //      (val =~ /^[-]?[0-9]{1,}$/)
        //      And
        //      (
        //              (val >= 0 And val <= 99)
        //              Or
        //              (val >= -5 Or val <= 5)
        //              And
        //              Not(val == 7)
        //      )
        //
        ValueCheck check = ValueCheck(
                new ValueRegExCheck("^[-]?[0-9]{1,}$")
        ).And(
                ValueCheck(
                        new ValueIntCheck(Int64(0), Int64(99))
                ).Or(
                        new ValueIntCheck(Int64(-5), Int64(5))
                ).And(
                        ValueCheck(
                                new ValueIntCheck(Int64(7), Int64(7))
                        ).Not()
                )
        );

        // Print out what the check does for value "42":
        std::cout << check.explain("42") << endl;

        // Evaluate the value "-3" and print out the result:
        std::cout << check.isValid("-3") << endl;
See also:
ValueRegExCheck, ValueIntCheck classes.

Member Enumeration Documentation

Enumerator:
E_AND 
E_OR 

Constructor & Destructor Documentation

limal::ValueCheck::ValueCheck (  ) 

Default constructor. Since it does not contain any check, the isValid() and and explain() will throw an error until a check is assigned using the operator=().

limal::ValueCheck::ValueCheck ( ValueCheckBase check  ) 

Single check assignment constructor.

Parameters:
check Pointer to a single check.
limal::ValueCheck::ValueCheck ( const ValueCheck ref  ) 

Check expression copy constructor.

Parameters:
ref Reference to a check expression.
virtual limal::ValueCheck::~ValueCheck (  )  [virtual]

Destructor.

limal::ValueCheck::ValueCheck ( const ValueCheck ref,
ECheckOp  op 
) [private]

Private constructor used to add the value check reference to the current expression list.

Parameters:
ref Reference to a value check.
op Relation to the current or last expression in the list.

Member Function Documentation

ValueCheck& limal::ValueCheck::And ( ValueCheckBase check  ) 

Append a single check to the list of checks using the E_AND relationship operator.

Parameters:
check Pointer to a single value check.
Returns:
Reference to the current object.
ValueCheck& limal::ValueCheck::And ( const ValueCheck ref  ) 

Append a sub-expression to the list of checks using the E_OR relationship operator.

Parameters:
ref Reference to the sub-expression.
Returns:
Reference to the current object.
void limal::ValueCheck::delRCnt ( ValueCheckBase ptr  )  [private]

Decrement the reference counter of the check and delete the object if needed.

Parameters:
ptr Pointer to a value check.
virtual BLOCXX_NAMESPACE ::String limal::ValueCheck::explain ( const BLOCXX_NAMESPACE::String &  value  )  const [virtual]

Returns a string explaining / showing the checks that will be done for the specified string value parameter.

Parameters:
value A string value.
Returns:
A string showing the check (list).

Implements limal::ValueCheckBase.

void limal::ValueCheck::incRCnt ( ValueCheckBase ptr  )  [private]

Increment the reference counter of the check.

Parameters:
ptr Pointer to a value check.
virtual bool limal::ValueCheck::isValid ( const BLOCXX_NAMESPACE::String &  value  )  const [virtual]

Evaluates a the specified string value parameter to a boolean using the single checks and sub-expressions it contains.

Parameters:
value The string value to evaluate.
Returns:
The boolean result of the check.

Implements limal::ValueCheckBase.

ValueCheck& limal::ValueCheck::Not (  ) 

Negate the result of the current expression.

Note:
There is no difference between:
        ValueCheck(...).Not().And(...)
and
        ValueCheck(...).And(...).Not()
Both are negating the complete expression like: Not( (...) And (...) )
Returns:
Reference to the current object.
ValueCheck& limal::ValueCheck::operator= ( const ValueCheck ref  ) 

Check expression assignment operator.

Parameters:
ref Reference to a check expression.
Returns:
Reference to the current object.
ValueCheck& limal::ValueCheck::operator= ( ValueCheckBase check  ) 

Single check assignment operator.

Parameters:
check Pointer to a single check.
Returns:
Reference to the current object.
ValueCheck& limal::ValueCheck::Or ( ValueCheckBase check  ) 

Append a single check to the list of checks using the E_OR relationship operator.

Parameters:
check Pointer to a single value check.
Returns:
Reference to the current object.
ValueCheck& limal::ValueCheck::Or ( const ValueCheck ref  ) 

Append a sub-expression to the list of checks using the E_OR relationship operator.

Parameters:
ref Reference to the sub-expression.
Returns:
Reference to the current object.

Member Data Documentation

Check relationship operator to the parent check.

BLOCXX_NAMESPACE ::List<ValueCheck> limal::ValueCheck::m_list [private]

List of further checks in the chain.

bool limal::ValueCheck::m_neg [private]

Whether to negate the result of the current chain.

Pointer to the current (reference counted) check.


The documentation for this class was generated from the following file:
Generated on Mon Jul 5 22:00:06 2010 for limal by  doxygen 1.6.3