[ Lit Window Library at SourceForge[ Lit Window Productions Homepage ]  [ wxWidgets Tips&Tricks ]  [  wxVisualSetup ]

Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

rule_base Class Reference

Base class for constraint rules. More...

Inheritance diagram for rule_base:

Inheritance graph
[legend]
Collaboration diagram for rule_base:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual value_assign_baseevaluate (const constraint_solver *) const =0
 Evaluate the rule and return a result object.
void execute_immediate (const constraint_solver *a_solver) const
 Evaluate the rule and immediately assign the result to the target.
virtual dependency_t is_dependent_on (const const_accessor &, symbol_table_interface *) const =0
virtual tstring name () const
 The programmer specified name of the rule.
bool operator!= (const accessor &a) const
bool operator== (const accessor &a) const
 Test if two rules update the same target.
 rule_base (const accessor &t)
const accessor & target () const
 Get the target.
virtual ~rule_base ()
Mirror rules
Mirror rules are used for twoway rules.

If a<->b is a two way rule, b<-a is the mirror rule of a<-b and vice versa. When solving a rule set, evaluation of mirror rules will be suppressed when the rule itself is evaluated. If a<-b is evaluated and a changes, b<-a would be evaluated because it depends on a. But if b<-a is the mirror rule of a<-b, its evaluation will be suppressed.

rule_baseget_mirror () const
void set_mirror (rule_base *r)

Protected Attributes

rule_basem_mirror
accessor m_target

Detailed Description

All rules used in the constraint mechanism inherit from this class.


Constructor & Destructor Documentation

virtual ~rule_base  )  [virtual]
 

rule_base const accessor &  t  ) 
 


Member Function Documentation

virtual value_assign_base* evaluate const constraint_solver  )  const [pure virtual]
 

This function evaluates the rule. Rules do not immediately assign the result. Instead they return a result object, which can later be used to assign the result to the target.

Returns:
a result object.

Implemented in rule_assign, and rule_expr.

void execute_immediate const constraint_solver a_solver  )  const
 

rule_base* get_mirror  )  const
 

virtual dependency_t is_dependent_on const const_accessor &  ,
symbol_table_interface * 
const [pure virtual]
 

Implemented in rule_assign, and rule_expr.

virtual tstring name  )  const [virtual]
 

bool operator!= const accessor &  a  )  const
 

bool operator== const accessor &  a  )  const
 

void set_mirror rule_base r  ) 
 

const accessor& target  )  const
 


Member Data Documentation

rule_base* m_mirror [protected]
 

accessor m_target [protected]
 


Copyright 2004, Hajo Kirchhoff, Lit Window Productions