OW_NAMESPACE::WQLCompile Class Reference

#include <OW_WQLCompile.hpp>

Collaboration diagram for OW_NAMESPACE::WQLCompile:

Collaboration graph
[legend]
List of all members.

Public Types

typedef Array< term_elTableauRow
typedef Array< TableauRowTableau
enum  el_type { EVAL_HEAP, TERMINAL_HEAP, OPERAND }

Public Member Functions

 WQLCompile ()
 WQLCompile (const WQLSelectStatement &wqs)
 ~WQLCompile ()
void compile (const WQLSelectStatement *wqs)
const TableaugetTableau () const
bool evaluate (const WQLPropertySource &source) const
 Evalautes the where clause using the symbol table to resolve symbols.
void print (std::ostream &ostr)
void printTableau (std::ostream &ostr)

Private Member Functions

void _buildEvalHeap (const WQLSelectStatement *wqs)
void _pushNOTDown ()
void _factoring ()
void _gatherDisj (Array< stack_el > &stk)
void _gatherConj (Array< stack_el > &stk, stack_el sel)
void _gather (Array< stack_el > &stk, stack_el sel, bool or_flag)
void _sortTableau ()

Static Private Member Functions

static void _ResolveProperty (WQLOperand &op, const WQLPropertySource &source)

Private Attributes

Tableau _tableau
Array< term_elterminal_heap
Array< eval_eleval_heap

Classes

struct  eval_el
struct  stack_el
struct  term_el

Detailed Description

Definition at line 39 of file OW_WQLCompile.hpp.


Member Typedef Documentation

typedef Array<TableauRow> OW_NAMESPACE::WQLCompile::Tableau
 

Definition at line 119 of file OW_WQLCompile.hpp.

typedef Array<term_el> OW_NAMESPACE::WQLCompile::TableauRow
 

Definition at line 117 of file OW_WQLCompile.hpp.


Member Enumeration Documentation

enum OW_NAMESPACE::WQLCompile::el_type
 

Enumerator:
EVAL_HEAP 
TERMINAL_HEAP 
OPERAND 

Definition at line 61 of file OW_WQLCompile.hpp.


Constructor & Destructor Documentation

OW_NAMESPACE::WQLCompile::WQLCompile  ) 
 

Definition at line 195 of file OW_WQLCompile.cpp.

OW_NAMESPACE::WQLCompile::WQLCompile const WQLSelectStatement wqs  ) 
 

Definition at line 198 of file OW_WQLCompile.cpp.

References compile().

OW_NAMESPACE::WQLCompile::~WQLCompile  ) 
 

Definition at line 202 of file OW_WQLCompile.cpp.


Member Function Documentation

void OW_NAMESPACE::WQLCompile::_buildEvalHeap const WQLSelectStatement wqs  )  [private]
 

Definition at line 357 of file OW_WQLCompile.cpp.

References OW_NAMESPACE::WQLSelectStatement::_operStack, OW_NAMESPACE::Array< T >::append(), EVAL_HEAP, eval_heap, i, OPERAND, OW_NAMESPACE::WQLSelectStatement::OperandOrOperation::OPERAND, OW_NAMESPACE::WQLCompile::stack_el::opn, OW_ASSERT, OW_NAMESPACE::Stack< T >::pop(), OW_NAMESPACE::Stack< T >::push(), OW_NAMESPACE::Array< T >::push_back(), OW_NAMESPACE::Stack< T >::size(), OW_NAMESPACE::Array< T >::size(), terminal_heap, TERMINAL_HEAP, OW_NAMESPACE::Stack< T >::top(), OW_NAMESPACE::WQLCompile::stack_el::type, OW_NAMESPACE::WQL_AND, OW_NAMESPACE::WQL_DO_NOTHING, OW_NAMESPACE::WQL_EQ, OW_NAMESPACE::WQL_GE, OW_NAMESPACE::WQL_GT, OW_NAMESPACE::WQL_ISA, OW_NAMESPACE::WQL_LE, OW_NAMESPACE::WQL_LT, OW_NAMESPACE::WQL_NE, OW_NAMESPACE::WQL_NOT, and OW_NAMESPACE::WQL_OR.

void OW_NAMESPACE::WQLCompile::_factoring  )  [private]
 

Definition at line 524 of file OW_WQLCompile.cpp.

References OW_NAMESPACE::Array< T >::append(), EVAL_HEAP, eval_heap, i, index, OW_NAMESPACE::Array< T >::insert(), s, OW_NAMESPACE::Array< T >::size(), OW_NAMESPACE::WQL_AND, and OW_NAMESPACE::WQL_OR.

void OW_NAMESPACE::WQLCompile::_gather Array< stack_el > &  stk,
stack_el  sel,
bool  or_flag
[private]
 

Definition at line 618 of file OW_WQLCompile.cpp.

References OW_NAMESPACE::Array< T >::append(), OW_NAMESPACE::Array< T >::empty(), EVAL_HEAP, eval_heap, i, OW_NAMESPACE::Array< T >::insert(), OW_NAMESPACE::Array< T >::remove(), OW_NAMESPACE::Array< T >::size(), type, OW_NAMESPACE::WQLCompile::stack_el::type, OW_NAMESPACE::WQL_AND, OW_NAMESPACE::WQL_DO_NOTHING, and OW_NAMESPACE::WQL_OR.

Referenced by _gatherConj(), and _gatherDisj().

void OW_NAMESPACE::WQLCompile::_gatherConj Array< stack_el > &  stk,
stack_el  sel
[private]
 

Definition at line 614 of file OW_WQLCompile.cpp.

References _gather().

void OW_NAMESPACE::WQLCompile::_gatherDisj Array< stack_el > &  stk  )  [private]
 

Definition at line 610 of file OW_WQLCompile.cpp.

References _gather(), and TERMINAL_HEAP.

void OW_NAMESPACE::WQLCompile::_pushNOTDown  )  [private]
 

Definition at line 438 of file OW_WQLCompile.cpp.

References EVAL_HEAP, eval_heap, i, OW_NAMESPACE::Array< T >::size(), OW_NAMESPACE::WQL_DO_NOTHING, and OW_NAMESPACE::WQL_NOT.

static void OW_NAMESPACE::WQLCompile::_ResolveProperty WQLOperand op,
const WQLPropertySource source
[inline, static, private]
 

Definition at line 146 of file OW_WQLCompile.hpp.

References OW_NAMESPACE::WQLOperand::getPropertyName(), OW_NAMESPACE::WQLOperand::getType(), OW_NAMESPACE::WQLPropertySource::getValue(), OW_THROW, and OW_NAMESPACE::WQLOperand::PROPERTY_NAME.

void OW_NAMESPACE::WQLCompile::_sortTableau  )  [private]
 

Definition at line 675 of file OW_WQLCompile.cpp.

References _tableau, i, OW_NAMESPACE::WQLOperand::PROPERTY_NAME, OW_NAMESPACE::Array< T >::size(), OW_NAMESPACE::WQL_GE, OW_NAMESPACE::WQL_GT, OW_NAMESPACE::WQL_LE, and OW_NAMESPACE::WQL_LT.

void OW_NAMESPACE::WQLCompile::compile const WQLSelectStatement wqs  ) 
 

Definition at line 205 of file OW_WQLCompile.cpp.

References OW_NAMESPACE::WQLSelectStatement::hasWhereClause().

Referenced by OW_NAMESPACE::WQLSelectStatement::compileWhereClause(), and WQLCompile().

bool OW_NAMESPACE::WQLCompile::evaluate const WQLPropertySource source  )  const
 

Evalautes the where clause using the symbol table to resolve symbols.

Returns:
true or false if the source passes the query
Exceptions:
NoSuchPropertyException if the where clause references a property that is unknown to source.
TypeMismatchException if the there is a type error in the where clause or if the property type of the source property doesn't match the query.

Definition at line 248 of file OW_WQLCompile.cpp.

References _tableau, className, OW_NAMESPACE::WQLPropertySource::evaluateISA(), i, OW_NAMESPACE::WQLOperand::PROPERTY_NAME, OW_NAMESPACE::Array< T >::size(), and OW_NAMESPACE::WQL_ISA.

const Tableau& OW_NAMESPACE::WQLCompile::getTableau  )  const [inline]
 

Definition at line 126 of file OW_WQLCompile.hpp.

void OW_NAMESPACE::WQLCompile::print std::ostream &  ostr  ) 
 

Definition at line 297 of file OW_WQLCompile.cpp.

References EVAL_HEAP, eval_heap, i, OW_NAMESPACE::Array< T >::size(), TERMINAL_HEAP, OW_NAMESPACE::WQL_DO_NOTHING, and OW_NAMESPACE::WQLOperationToString().

void OW_NAMESPACE::WQLCompile::printTableau std::ostream &  ostr  ) 
 

Definition at line 343 of file OW_WQLCompile.cpp.

References _tableau, i, OW_NAMESPACE::Array< T >::size(), and OW_NAMESPACE::WQLOperationToString().


Member Data Documentation

Tableau OW_NAMESPACE::WQLCompile::_tableau [private]
 

Definition at line 167 of file OW_WQLCompile.hpp.

Referenced by _sortTableau(), evaluate(), and printTableau().

Array<eval_el> OW_NAMESPACE::WQLCompile::eval_heap [private]
 

Definition at line 174 of file OW_WQLCompile.hpp.

Referenced by _buildEvalHeap(), _factoring(), _gather(), _pushNOTDown(), and print().

Array<term_el> OW_NAMESPACE::WQLCompile::terminal_heap [private]
 

Definition at line 173 of file OW_WQLCompile.hpp.

Referenced by _buildEvalHeap().


The documentation for this class was generated from the following files:
Generated on Thu Feb 9 09:16:54 2006 for openwbem by  doxygen 1.4.6