diff options
author | sbw1 <sbw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-02-27 00:51:26 +0000 |
---|---|---|
committer | sbw1 <sbw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-02-27 00:51:26 +0000 |
commit | 34ecb5de6da4b5bd199eb3ee94119227652a8bd4 (patch) | |
tree | 67b30d9c76a8b392cf360f78e4249903a2ca515e /TAO/orbsvcs/orbsvcs/Trader/Constraint_Interpreter.cpp | |
parent | f49e62b3ea80aa91f5202342992eabb6dcd6e230 (diff) | |
download | ATCD-34ecb5de6da4b5bd199eb3ee94119227652a8bd4.tar.gz |
Well, people, here it is: the trading service, our specification
compliant stand alone trader. Enjoy.
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Trader/Constraint_Interpreter.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Trader/Constraint_Interpreter.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Constraint_Interpreter.cpp b/TAO/orbsvcs/orbsvcs/Trader/Constraint_Interpreter.cpp new file mode 100644 index 00000000000..4077030341f --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Trader/Constraint_Interpreter.cpp @@ -0,0 +1,77 @@ +// Constraint_Interpreter.cpp + +// ======================================================================== +// $Id$ +// +// = LIBRARY +// orbsvcs +// +// = FILENAME +// Constraint_Interpreter.cpp +// +// = AUTHOR +// Seth Widoff <sbw1@cs.wustl.edu> +// +// ======================================================================== + + +#include "Constraint_Interpreter.h" +#include <ctype.h> +#include <stdio.h> + +TAO_Constraint_Interpreter:: +TAO_Constraint_Interpreter(CosTradingRepos::ServiceTypeRepository::TypeStruct* ts, + const char* constraints, + CORBA::Environment& _env) + TAO_THROW_SPEC (CosTrading::IllegalConstraint) + : TAO_Interpreter () +{ + TAO_Constraint_Validator type_checker(ts); + + if (TAO_Interpreter::is_empty_string (constraints)) + this->root_ = new TAO_Literal_Constraint ((CORBA::Boolean) 1); + else + { + if (this->build_tree (constraints) != 0) + TAO_THROW (CosTrading::IllegalConstraint (constraints)); + + if (type_checker.validate (this->root_) == -1) + TAO_THROW (CosTrading::IllegalConstraint (constraints)); + } +} + +TAO_Constraint_Interpreter:: +TAO_Constraint_Interpreter(TAO_Constraint_Validator& validator, + const char* constraints, + CORBA::Environment& _env) + TAO_THROW_SPEC (CosTrading::IllegalConstraint) +{ + if (TAO_Interpreter::is_empty_string (constraints)) + this->root_ = new TAO_Literal_Constraint ((CORBA::Boolean) 1); + else + { + if (this->build_tree (constraints) != 0) + TAO_THROW (CosTrading::IllegalConstraint (constraints)); + + if (validator.validate (this->root_) == -1) + TAO_THROW (CosTrading::IllegalConstraint (constraints)); + } +} + +TAO_Constraint_Interpreter::~TAO_Constraint_Interpreter (void) +{ +} + +CORBA::Boolean +TAO_Constraint_Interpreter::evaluate (CosTrading::Offer* offer) +{ + TAO_Constraint_Evaluator evaluator (offer); + return evaluator.evaluate_constraint (this->root_); +} + +CORBA::Boolean +TAO_Constraint_Interpreter::evaluate(TAO_Constraint_Evaluator& evaluator) +{ + return evaluator.evaluate_constraint (this->root_); +} + |