TAO_Constraint_Validator Class Reference

TAO_Constraint_Validator ensures that in an expression tree passed to it, the operands of each operation match the correct types. More...

#include <Constraint_Visitors.h>

Inheritance diagram for TAO_Constraint_Validator:

Inheritance graph
[legend]
Collaboration diagram for TAO_Constraint_Validator:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_Constraint_Validator (void)
 Constructor.
virtual ~TAO_Constraint_Validator (void)
 Destructor.
int validate (TAO_Constraint *root)
virtual int visit_constraint (TAO_Unary_Constraint *constraint)
virtual int visit_with (TAO_Unary_Constraint *unary_with)
virtual int visit_min (TAO_Unary_Constraint *unary_min)
virtual int visit_max (TAO_Unary_Constraint *unary_max)
virtual int visit_first (TAO_Noop_Constraint *noop_first)
virtual int visit_random (TAO_Noop_Constraint *noop_random)
virtual int visit_and (TAO_Binary_Constraint *boolean_and)
 The two operands must return a boolean value.
virtual int visit_or (TAO_Binary_Constraint *boolean_or)
virtual int visit_not (TAO_Unary_Constraint *unary_not)
 The operand must return a boolean value.
virtual int visit_exist (TAO_Unary_Constraint *unary_exist)
virtual int visit_unary_minus (TAO_Unary_Constraint *unary_minus)
 The operand must return a number to be negated.
virtual int visit_add (TAO_Binary_Constraint *boolean_add)
 Both operands must return numeric results.
virtual int visit_sub (TAO_Binary_Constraint *boolean_sub)
virtual int visit_mult (TAO_Binary_Constraint *boolean_mult)
virtual int visit_div (TAO_Binary_Constraint *boolean_div)
virtual int visit_twiddle (TAO_Binary_Constraint *binary_twiddle)
 Both operands must return strings.
virtual int visit_in (TAO_Binary_Constraint *binary_in)
virtual int visit_less_than (TAO_Binary_Constraint *boolean_lt)
 The left and right operands must both be of the same simple type.
virtual int visit_less_than_equal (TAO_Binary_Constraint *boolean_lte)
virtual int visit_greater_than (TAO_Binary_Constraint *boolean_gt)
virtual int visit_greater_than_equal (TAO_Binary_Constraint *boolean_gte)
virtual int visit_equal (TAO_Binary_Constraint *boolean_eq)
virtual int visit_not_equal (TAO_Binary_Constraint *boolean_neq)
virtual int visit_literal (TAO_Literal_Constraint *literal)
 The property must be defined in the service type description.
virtual int visit_property (TAO_Property_Constraint *literal)

Protected Attributes

TAO_Typecode_Table type_map_

Private Member Functions

CORBA::TypeCodeextract_type (TAO_Constraint *expr_type, TAO_Expression_Type &type)
int expr_returns_boolean (TAO_Expression_Type expr_type)
int expr_returns_number (TAO_Expression_Type expr_type)
int expr_returns_string (TAO_Expression_Type expr_type)
 TAO_Constraint_Validator (const TAO_Constraint_Validator &)
TAO_Constraint_Validatoroperator= (const TAO_Constraint_Validator &)

Detailed Description

TAO_Constraint_Validator ensures that in an expression tree passed to it, the operands of each operation match the correct types.

TAO_Constraint_Validator uses the visitor pattern to traverse all the nodes in an expression tree, checking that for each operator node the operands are of the proper data type it they're literals, or that they exist in the service type definition _and_ have the proper type, if they're property names. The algorithm for type checking is as follows: ensure that operand expression(s) return the correct types using expr_returns* methods. If they (or it) return the correct types, call accept on each operand until all return true or one returns false, at which point we can back out of the traversal and indicate failure.


Constructor & Destructor Documentation

TAO_Constraint_Validator::TAO_Constraint_Validator void   ) 
 

Constructor.

TAO_Constraint_Validator::~TAO_Constraint_Validator void   )  [virtual]
 

Destructor.

TAO_Constraint_Validator::TAO_Constraint_Validator const TAO_Constraint_Validator  )  [private]
 


Member Function Documentation

int TAO_Constraint_Validator::expr_returns_boolean TAO_Expression_Type  expr_type  )  [private]
 

expr_returns_boolean returns 1 if <expr_type>, when evaluated, will return a boolean.

int TAO_Constraint_Validator::expr_returns_number TAO_Expression_Type  expr_type  )  [private]
 

expr_returns_boolean returns 1 if <expr_type>, when evaluated, will return a number.

int TAO_Constraint_Validator::expr_returns_string TAO_Expression_Type  expr_type  )  [private]
 

expr_returns_boolean returns 1 if <expr_type>, when evaluated, will return a string.

CORBA::TypeCode * TAO_Constraint_Validator::extract_type TAO_Constraint expr_type,
TAO_Expression_Type type
[private]
 

TAO_Constraint_Validator& TAO_Constraint_Validator::operator= const TAO_Constraint_Validator  )  [private]
 

int TAO_Constraint_Validator::validate TAO_Constraint root  ) 
 

Validate returns 1 if the expression tree whose root is <root> makes semantic sense, in that the operands for each operation comply with each other and the types accepted by the operator.

int TAO_Constraint_Validator::visit_add TAO_Binary_Constraint boolean_add  )  [virtual]
 

Both operands must return numeric results.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_and TAO_Binary_Constraint boolean_and  )  [virtual]
 

The two operands must return a boolean value.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_constraint TAO_Unary_Constraint constraint  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_div TAO_Binary_Constraint boolean_div  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_equal TAO_Binary_Constraint boolean_eq  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_exist TAO_Unary_Constraint unary_exist  )  [virtual]
 

The operand must return a valid (i.e., present in the service type description) property name.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_first TAO_Noop_Constraint noop_first  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_greater_than TAO_Binary_Constraint boolean_gt  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_greater_than_equal TAO_Binary_Constraint boolean_gte  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_in TAO_Binary_Constraint binary_in  )  [virtual]
 

The right operand must be a sequence of the same simple type as the left operand.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_less_than TAO_Binary_Constraint boolean_lt  )  [virtual]
 

The left and right operands must both be of the same simple type.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_less_than_equal TAO_Binary_Constraint boolean_lte  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_literal TAO_Literal_Constraint literal  )  [virtual]
 

The property must be defined in the service type description.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_max TAO_Unary_Constraint unary_max  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_min TAO_Unary_Constraint unary_min  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_mult TAO_Binary_Constraint boolean_mult  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_not TAO_Unary_Constraint unary_not  )  [virtual]
 

The operand must return a boolean value.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_not_equal TAO_Binary_Constraint boolean_neq  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_or TAO_Binary_Constraint boolean_or  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_property TAO_Property_Constraint literal  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_random TAO_Noop_Constraint noop_random  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_sub TAO_Binary_Constraint boolean_sub  )  [virtual]
 

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_twiddle TAO_Binary_Constraint binary_twiddle  )  [virtual]
 

Both operands must return strings.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_unary_minus TAO_Unary_Constraint unary_minus  )  [virtual]
 

The operand must return a number to be negated.

Implements TAO_Constraint_Visitor.

int TAO_Constraint_Validator::visit_with TAO_Unary_Constraint unary_with  )  [virtual]
 

Implements TAO_Constraint_Visitor.


Member Data Documentation

TAO_Typecode_Table TAO_Constraint_Validator::type_map_ [protected]
 

A map gleaned from the ServiceTypeStruct, which correlates property names with their types.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:33:23 2005 for TAO_CosTrader by  doxygen 1.4.5