Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

TAO_Constraint_Evaluator Class Reference

TAO_Constraint_Evaluator traverse a constraint expression tree, and determines whether an offer fits the constraints represented by the tree. More...

#include <Constraint_Visitors.h>

Inheritance diagram for TAO_Constraint_Evaluator:

Inheritance graph
[legend]
Collaboration diagram for TAO_Constraint_Evaluator:

Collaboration graph
[legend]
List of all members.

Public Methods

 TAO_Constraint_Evaluator (void)
 Constructor. More...

CORBA::Boolean evaluate_constraint (TAO_Constraint *root)
 Evaluate returns 1 if the offer satisfies the constraints represented by the the expression tree rooted at <root>, 0 if it doesn't. More...

int evaluate_preference (TAO_Constraint *root, TAO_Literal_Constraint &result)
 The result of the preference evaluation is stored in result. The method returns 0 upon success, -1 upon failure. More...

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)
 Takes the logical and of the results of both operands. More...

virtual int visit_or (TAO_Binary_Constraint *boolean_or)
 Takes the logical or of the results of both operands. More...

virtual int visit_not (TAO_Unary_Constraint *unary_not)
 Logically negates the value of the operand. More...

virtual int visit_exist (TAO_Unary_Constraint *unary_exist)
 The property exists if its name is bound to a value in the <props_> map. More...

virtual int visit_unary_minus (TAO_Unary_Constraint *unary_minus)
 Mathematically negates the return value the operand. More...

virtual int visit_add (TAO_Binary_Constraint *boolean_add)
 Add the results of evaluating the left and right operands. More...

virtual int visit_sub (TAO_Binary_Constraint *boolean_sub)
 Subtract the results of evaluating the left and right operands. More...

virtual int visit_mult (TAO_Binary_Constraint *boolean_mult)
 Multiply the results of evaluating the left and right operands. More...

virtual int visit_div (TAO_Binary_Constraint *boolean_div)
 Divide the results of evaluating the left and right operands. More...

virtual int visit_twiddle (TAO_Binary_Constraint *binary_twiddle)
 Determines if the right operand is a substring of the left. More...

virtual int visit_in (TAO_Binary_Constraint *binary_in)
 Determines if the sequence represented by the right operand contains the left operand. More...

virtual int visit_less_than (TAO_Binary_Constraint *boolean_lt)
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)
 Copy the value of the literal into the result container. More...

virtual int visit_property (TAO_Property_Constraint *literal)
 Copy the value of the property into the result container. More...


Protected Attributes

TAO_Lookup_Table props_
 The map of property names to their values for a property. More...

Operand_Queue queue_
 The result of a non_boolean operation. More...


Private Methods

void do_the_op (int operation)
 Method for performing a arithmetic or comparison operation. More...

int visit_bin_op (TAO_Binary_Constraint *op, int operation)
 Method for evaluating a binary operation. More...

CORBA::Boolean sequence_does_contain (CORBA::Any *sequence, TAO_Literal_Constraint &element)
 Determine if sequence contains <element>, a literal of the same simple type as <sequence_type>. Return 1 in this eventuality. More...

 TAO_Constraint_Evaluator (const TAO_Constraint_Evaluator &)
 Disallow copying. More...

TAO_Constraint_Evaluator & operator= (const TAO_Constraint_Evaluator &)

Detailed Description

TAO_Constraint_Evaluator traverse a constraint expression tree, and determines whether an offer fits the constraints represented by the tree.

Using the Visitor pattern, the TAO_Constraint_Evaluator has each node of the expression tree call back to it with the method designated for its type. In that method, the visitor will evaluate its operands and perform the operation designated by that node's type, and return the result. Note: the TAO_Constraint_Evaluator assumes the tree is semantically correct, that is, the validate method on TAO_Constraint_Validator return true. The only possible evaluation time errors are a divide by a property whose value is zero and undefined properties.


Constructor & Destructor Documentation

TAO_Constraint_Evaluator::TAO_Constraint_Evaluator void   
 

Constructor.

TAO_Constraint_Evaluator::TAO_Constraint_Evaluator const TAO_Constraint_Evaluator &    [private]
 

Disallow copying.


Member Function Documentation

void TAO_Constraint_Evaluator::do_the_op int    operation [private]
 

Method for performing a arithmetic or comparison operation.

CORBA::Boolean TAO_Constraint_Evaluator::evaluate_constraint TAO_Constraint   root
 

Evaluate returns 1 if the offer satisfies the constraints represented by the the expression tree rooted at <root>, 0 if it doesn't.

If an error occurs during process, the constraint automatically fails.

int TAO_Constraint_Evaluator::evaluate_preference TAO_Constraint   root,
TAO_Literal_Constraint   result
 

The result of the preference evaluation is stored in result. The method returns 0 upon success, -1 upon failure.

TAO_Constraint_Evaluator& TAO_Constraint_Evaluator::operator= const TAO_Constraint_Evaluator &    [private]
 

CORBA::Boolean TAO_Constraint_Evaluator::sequence_does_contain CORBA::Any   sequence,
TAO_Literal_Constraint   element
[private]
 

Determine if sequence contains <element>, a literal of the same simple type as <sequence_type>. Return 1 in this eventuality.

int TAO_Constraint_Evaluator::visit_add TAO_Binary_Constraint   boolean_add [virtual]
 

Add the results of evaluating the left and right operands.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_and TAO_Binary_Constraint   boolean_and [virtual]
 

Takes the logical and of the results of both operands.

Note that in the case where the left operand returns zero, the result is immediately known.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_bin_op TAO_Binary_Constraint   op,
int    operation
[private]
 

Method for evaluating a binary operation.

int TAO_Constraint_Evaluator::visit_constraint TAO_Unary_Constraint   constraint [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_div TAO_Binary_Constraint   boolean_div [virtual]
 

Divide the results of evaluating the left and right operands.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_equal TAO_Binary_Constraint   boolean_eq [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_exist TAO_Unary_Constraint   unary_exist [virtual]
 

The property exists if its name is bound to a value in the <props_> map.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_first TAO_Noop_Constraint   noop_first [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_greater_than TAO_Binary_Constraint   boolean_gt [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_greater_than_equal TAO_Binary_Constraint   boolean_gte [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_in TAO_Binary_Constraint   binary_in [virtual]
 

Determines if the sequence represented by the right operand contains the left operand.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_less_than TAO_Binary_Constraint   boolean_lt [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_less_than_equal TAO_Binary_Constraint   boolean_lte [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_literal TAO_Literal_Constraint   literal [virtual]
 

Copy the value of the literal into the result container.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_max TAO_Unary_Constraint   unary_max [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_min TAO_Unary_Constraint   unary_min [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_mult TAO_Binary_Constraint   boolean_mult [virtual]
 

Multiply the results of evaluating the left and right operands.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_not TAO_Unary_Constraint   unary_not [virtual]
 

Logically negates the value of the operand.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_not_equal TAO_Binary_Constraint   boolean_neq [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_or TAO_Binary_Constraint   boolean_or [virtual]
 

Takes the logical or of the results of both operands.

Note that in the case where the left operand returns one, the result is immediately known.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_property TAO_Property_Constraint   literal [virtual]
 

Copy the value of the property into the result container.

Reimplemented from TAO_Constraint_Visitor.

Reimplemented in TAO_Trader_Constraint_Evaluator.

int TAO_Constraint_Evaluator::visit_random TAO_Noop_Constraint   noop_random [virtual]
 

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_sub TAO_Binary_Constraint   boolean_sub [virtual]
 

Subtract the results of evaluating the left and right operands.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_twiddle TAO_Binary_Constraint   binary_twiddle [virtual]
 

Determines if the right operand is a substring of the left.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_unary_minus TAO_Unary_Constraint   unary_minus [virtual]
 

Mathematically negates the return value the operand.

Reimplemented from TAO_Constraint_Visitor.

int TAO_Constraint_Evaluator::visit_with TAO_Unary_Constraint   unary_with [virtual]
 

Reimplemented from TAO_Constraint_Visitor.


Member Data Documentation

TAO_Lookup_Table TAO_Constraint_Evaluator::props_ [protected]
 

The map of property names to their values for a property.

Operand_Queue TAO_Constraint_Evaluator::queue_ [protected]
 

The result of a non_boolean operation.


The documentation for this class was generated from the following files:
Generated on Thu Oct 10 22:23:18 2002 for TAO_CosTrader by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001