Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

rtreeactionrule.h

Go to the documentation of this file.
00001 #ifndef _RTREEACTIONRULE_H_
00002 #define _RTREEACTIONRULE_H_
00003 
00004 #include "rulecontext.h"
00005 
00007 class Action{
00008  public:
00009   virtual ~Action() {};
00010   virtual void execute(NameSpace &nameSpace) = 0;
00011   virtual Action* copy() const = 0;
00012   virtual Action* substitute(const Node::Assignment &assign) = 0;
00013 };
00014 
00016 class ActionWrite : public Action{
00018   Node* expr;
00019  public:
00021   ActionWrite(Node* iexpr);
00022   virtual ~ActionWrite();
00023 
00024   virtual void execute(NameSpace &nameSpace);
00025   virtual Action* copy() const;
00026   virtual Action* substitute(const Node::Assignment &assign);
00027 };
00029 class ActionSet : public Action{
00031   Node* name;
00033   const string attribute;
00035   Node* expr;
00037   const bool global;
00038  public:
00040   ActionSet(Node* iname, Constant* iattribute, Node* iexpr, bool iglobal);
00041   virtual ~ActionSet();
00042 
00043   virtual void execute(NameSpace &nameSpace);
00044   virtual Action* copy() const;
00045   virtual Action* substitute(const Node::Assignment &assign);
00046 };
00047 
00049 class ActionList : public list<Action*> {
00050  public:
00051   ActionList() {};
00052   ActionList(Action* action) { push_back(action); };
00053   ~ActionList();
00054 
00055   ActionList* push_back(Action* action);
00056 
00057   ActionList* copy() const;
00058   ActionList* substitute(const Node::Assignment &assign);
00059 
00060   virtual void execute(NameSpace &nameSpace) const;
00061 };
00062 
00064 class ActionRule : public Rule{
00066   List* phpInPattern;
00068   ActionList* actions;
00069 public:
00070   
00072   ActionRule(List* iphpInPattern, ActionList* iactions);
00073 
00074   virtual ~ActionRule();
00075 
00076   virtual bool execute(RuleContext* context, List* phpIn, List* phpOut, List* tplOut, Node::Assignment& assign) const;
00077   
00078   virtual Rule* copy();
00079   virtual Rule* substitute(const Node::Assignment &assign);
00080   
00081   virtual ostream& print(ostream& os) const;
00082 };
00083 
00085 class RuleWithActionRule : public Rule{
00087   Rule* rule;
00089   ActionList* actions;
00090 public:
00091   
00093   RuleWithActionRule(Rule* irule, ActionList* iactions);
00094 
00095   virtual ~RuleWithActionRule();
00096 
00097   virtual bool execute(RuleContext* context, List* phpIn, List* phpOut, List* tplOut, Node::Assignment& assign) const;
00098   
00099   virtual Rule* copy();
00100   virtual Rule* substitute(const Node::Assignment &assign);
00101   
00102   virtual ostream& print(ostream& os) const;
00103 };
00104 
00105 #endif

Generated on Fri Nov 21 17:54:03 2003 for PHPX by doxygen 1.3.3