diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Constraint_Interpreter.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Constraint_Interpreter.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Constraint_Interpreter.cpp b/TAO/orbsvcs/orbsvcs/Notify/Constraint_Interpreter.cpp new file mode 100644 index 00000000000..8cb1eac6dd0 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Notify/Constraint_Interpreter.cpp @@ -0,0 +1,46 @@ +// $Id$ + +#include "Constraint_Interpreter.h" +#include "Constraint_Visitors.h" + +ACE_RCSID(Notify, NS_Constraint_Interpreter, "$Id$") + +TAO_NS_Constraint_Interpreter::TAO_NS_Constraint_Interpreter (void) +{ +} + +TAO_NS_Constraint_Interpreter::~TAO_NS_Constraint_Interpreter (void) +{ +} + +void +TAO_NS_Constraint_Interpreter::build_tree ( + const char *constraints + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC ((CosNotifyFilter::InvalidConstraint, + CORBA::NO_MEMORY)) +{ + if (TAO_ETCL_Interpreter::is_empty_string (constraints)) + { + // Root is deleted in the TAO_Interpreter's destructor. + ACE_NEW_THROW_EX (this->root_, + TAO_ETCL_Literal_Constraint ((CORBA::Boolean) 1), + CORBA::NO_MEMORY ()); + ACE_CHECK; + } + else + { + // root_ is set in this base class call. + if (TAO_ETCL_Interpreter::build_tree (constraints) != 0) + ACE_THROW (CosNotifyFilter::InvalidConstraint ()); + } +} + +CORBA::Boolean +TAO_NS_Constraint_Interpreter::evaluate (TAO_NS_Constraint_Visitor &evaluator) +{ + CORBA::Boolean retval = evaluator.evaluate_constraint (this->root_); + + return retval; +} |