summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Log/Log_Constraint_Interpreter.cpp
blob: 533efe4307f1fbe11a08b72c8b731f2388ba92b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// $Id$

#include "Log_Constraint_Interpreter.h"
#include "Log_Constraint_Visitors.h"

TAO_Log_Constraint_Interpreter::
TAO_Log_Constraint_Interpreter(const char* constraints,
                               CORBA::Environment& ACE_TRY_ENV)
  ACE_THROW_SPEC ((DsLogAdmin::InvalidConstraint,
                   CORBA::NO_MEMORY))
{
  if (TAO_Interpreter::is_empty_string (constraints))
    {
      ACE_NEW_THROW_EX (this->root_,
                        TAO_Literal_Constraint ((CORBA::Boolean) 1),
                        CORBA::NO_MEMORY ());
      ACE_CHECK;
    }
  else
    {
      if (this->build_tree (constraints) != 0)
        ACE_THROW (DsLogAdmin::InvalidConstraint ());

      // @@ pradeep: Don't know exactly how the validator works in the
      // Trader so the validater visitor is not used here.
      /*      if (validator.validate (this->root_) == -1)
              ACE_THROW (CosTrading::IllegalConstraint (constraints));*/
    }
}

TAO_Log_Constraint_Interpreter::~TAO_Log_Constraint_Interpreter (void)
{
}

CORBA::Boolean
TAO_Log_Constraint_Interpreter::evaluate (TAO_Constraint_Evaluator& evaluator)
{
  return evaluator.evaluate_constraint (this->root_);
}