Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CriteriaBinaryOperator Class Referenceabstract

#include <criteria.h>

Inheritance diagram for CriteriaBinaryOperator:
CriteriaParent CriteriaNode CriteriaAnd CriteriaOr

Public Member Functions

virtual CriteriaNodeunhook ()
 
virtual CriteriaNodeunhook (CriteriaNode *child)
 
virtual std::vector
< CriteriaNode * > 
getChildren () const
 
virtual CriteriaNodeclone () const =0
 
 CriteriaBinaryOperator (CriteriaNode *child, CriteriaNode *newNode)
 
virtual ~CriteriaBinaryOperator ()
 
virtual void replaceChild (CriteriaNode *child, CriteriaNode *replacement)
 
- Public Member Functions inherited from CriteriaParent
 CriteriaParent (CriteriaParent *parent=NULL)
 
virtual ~CriteriaParent ()
 
- Public Member Functions inherited from CriteriaNode
virtual bool isDestination (unsigned system) const =0
 
virtual std::string getDescription () const =0
 
virtual std::string getText () const =0
 
 CriteriaNode (CriteriaParent *parent=NULL)
 
virtual ~CriteriaNode ()
 
void setParent (CriteriaParent *parent)
 
CriteriaParentgetParent ()
 

Protected Attributes

CriteriaNodem_left
 
CriteriaNodem_right
 

Detailed Description

Definition at line 132 of file criteria.h.

Constructor & Destructor Documentation

CriteriaBinaryOperator::CriteriaBinaryOperator ( CriteriaNode child,
CriteriaNode newNode 
)

Definition at line 197 of file criteria.cpp.

References CriteriaNode::getParent(), m_left, m_right, CriteriaParent::replaceChild(), and CriteriaNode::setParent().

197  :
198  CriteriaParent( child->getParent() )
199 {
200  assert( child != NULL );
201  assert( newNode != NULL );
202  m_left = child;
203  m_right = newNode;
204  if ( child->getParent() )
205  child->getParent()->replaceChild( child, this );
206  child->setParent( this );
207 
208  newNode->setParent( this );
209 }
CriteriaBinaryOperator::~CriteriaBinaryOperator ( )
virtual

Definition at line 241 of file criteria.cpp.

References m_left, and m_right.

242 {
243  if (m_left)
244  delete m_left;
245  if (m_right)
246  delete m_right;
247 }

Member Function Documentation

virtual CriteriaNode* CriteriaBinaryOperator::clone ( ) const
pure virtual

Implements CriteriaParent.

Implemented in CriteriaOr, and CriteriaAnd.

vector< CriteriaNode * > CriteriaBinaryOperator::getChildren ( ) const
virtual

Implements CriteriaNode.

Definition at line 231 of file criteria.cpp.

References m_left, and m_right.

232 {
233  vector< CriteriaNode* >temp;
234  if (m_left)
235  temp.push_back( m_left );
236  if (m_right)
237  temp.push_back( m_right );
238  return temp;
239 }
void CriteriaBinaryOperator::replaceChild ( CriteriaNode child,
CriteriaNode replacement 
)
virtual

Implements CriteriaParent.

Definition at line 249 of file criteria.cpp.

References m_left, and m_right.

250 {
251  assert( (m_left == child) || (m_right == child) );
252  if (child == m_left)
253  m_left = replacement;
254  else
255  m_right = replacement;
256 }
CriteriaNode * CriteriaBinaryOperator::unhook ( )
virtual

Implements CriteriaNode.

Definition at line 211 of file criteria.cpp.

References CriteriaNode::getParent(), and CriteriaParent::unhook().

212 {
213  return getParent()->unhook( this );
214 }
CriteriaNode * CriteriaBinaryOperator::unhook ( CriteriaNode child)
virtual

Implements CriteriaParent.

Definition at line 216 of file criteria.cpp.

References CriteriaNode::getParent(), m_left, m_right, CriteriaParent::replaceChild(), and CriteriaNode::setParent().

217 {
218  assert( (m_left == child) || (m_right == child) );
219  if (child == m_left) {
221  getParent()->replaceChild( this, m_right );
222  m_right = NULL;
223  } else {
224  m_left->setParent( getParent() );
225  getParent()->replaceChild( this, m_left );
226  m_left = NULL;
227  }
228  return this;
229 }

Member Data Documentation


The documentation for this class was generated from the following files: