orca-robotics


INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

REPOSITORY
Interfaces
Components
Libraries
Utilities
Software Map

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard
Wiki
login/pass: orca/orca

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

browserfsm.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2008 Alex Brooks, Alexei Makarenko, Tobias Kaupp
00005 
00006  * This copy of Orca is licensed to you under the terms described in
00007  * the LICENSE file included in this distribution.
00008  */
00009 
00010 // Autogenerated by orcasmc which is based on smc by R. Martin.
00011 // See http://www.objectmentor.com/resources/downloads/index.
00012 
00013 #ifndef ORCASMC_AUTOGEN_BROWSERFSM_FSM_H
00014 #define ORCASMC_AUTOGEN_BROWSERFSM_FSM_H
00015 
00016 #include <IceUtil/Mutex.h>
00017 
00018 class BrowserFsm;
00019 
00020 class BrowserFsmState 
00021 {
00022 public:
00023     virtual ~BrowserFsmState() {};
00024     virtual const char* StateName() const = 0;
00025     virtual void top(BrowserFsm& s);
00026     virtual void up(BrowserFsm& s);
00027     virtual void deactivate(BrowserFsm& s);
00028     virtual void fault(BrowserFsm& s);
00029     virtual void filter(BrowserFsm& s);
00030     virtual void reload(BrowserFsm& s);
00031     virtual void pick(BrowserFsm& s);
00032     virtual void activate(BrowserFsm& s);
00033 };
00034 
00035 class BrowserFsmOperationState : public BrowserFsmState 
00036 {
00037 public:
00038     virtual const char* StateName() const
00039         {return("Operation");};
00040     virtual void deactivate(BrowserFsm&);
00041     virtual void fault(BrowserFsm&);
00042     virtual void top(BrowserFsm&);
00043     virtual void up(BrowserFsm&);
00044     virtual void reload(BrowserFsm&);
00045 };
00046 
00047 class BrowserFsmInterfaceState : public BrowserFsmState 
00048 {
00049 public:
00050     virtual const char* StateName() const
00051         {return("Interface");};
00052     virtual void deactivate(BrowserFsm&);
00053     virtual void fault(BrowserFsm&);
00054     virtual void top(BrowserFsm&);
00055     virtual void up(BrowserFsm&);
00056     virtual void reload(BrowserFsm&);
00057     virtual void pick(BrowserFsm&);
00058 };
00059 
00060 class BrowserFsmComponentState : public BrowserFsmState 
00061 {
00062 public:
00063     virtual const char* StateName() const
00064         {return("Component");};
00065     virtual void deactivate(BrowserFsm&);
00066     virtual void fault(BrowserFsm&);
00067     virtual void top(BrowserFsm&);
00068     virtual void up(BrowserFsm&);
00069     virtual void reload(BrowserFsm&);
00070     virtual void pick(BrowserFsm&);
00071 };
00072 
00073 class BrowserFsmPlatformState : public BrowserFsmState 
00074 {
00075 public:
00076     virtual const char* StateName() const
00077         {return("Platform");};
00078     virtual void deactivate(BrowserFsm&);
00079     virtual void fault(BrowserFsm&);
00080     virtual void up(BrowserFsm&);
00081     virtual void reload(BrowserFsm&);
00082     virtual void pick(BrowserFsm&);
00083 };
00084 
00085 class BrowserFsmRegistryState : public BrowserFsmState 
00086 {
00087 public:
00088     virtual const char* StateName() const
00089         {return("Registry");};
00090     virtual void deactivate(BrowserFsm&);
00091     virtual void fault(BrowserFsm&);
00092     virtual void filter(BrowserFsm&);
00093     virtual void reload(BrowserFsm&);
00094     virtual void pick(BrowserFsm&);
00095 };
00096 
00097 class BrowserFsmIdleState : public BrowserFsmState 
00098 {
00099 public:
00100     virtual const char* StateName() const
00101         {return("Idle");};
00102     virtual void activate(BrowserFsm&);
00103 };
00104 
00105 // Human-written FSM should derive from this class
00106 class BrowserFsm
00107 {
00108     friend class BrowserFsmState;
00109     friend class BrowserFsmOperationState;
00110     friend class BrowserFsmInterfaceState;
00111     friend class BrowserFsmComponentState;
00112     friend class BrowserFsmPlatformState;
00113     friend class BrowserFsmRegistryState;
00114     friend class BrowserFsmIdleState;
00115 
00116 public:
00117     // default constructor sets initial state
00118     BrowserFsm() : itsState(&IdleState) {};
00119     virtual ~BrowserFsm() {};
00120 
00121     // anybody can issue events to the FSM
00122     void top() {itsState->top(*this);}
00123     void up() {itsState->up(*this);}
00124     void deactivate() {itsState->deactivate(*this);}
00125     void fault() {itsState->fault(*this);}
00126     void filter() {itsState->filter(*this);}
00127     void reload() {itsState->reload(*this);}
00128     void pick() {itsState->pick(*this);}
00129     void activate() {itsState->activate(*this);}
00130 
00131 protected:
00132     // Implement these actions in the derived class
00133     virtual void pickLastOperation() = 0;
00134     virtual void pickLastInterface() = 0;
00135     virtual void showOperation() = 0;
00136     virtual void loadOperation() = 0;
00137     virtual void pickLastComponent() = 0;
00138     virtual void showInterface() = 0;
00139     virtual void loadInterface() = 0;
00140     virtual void pickLastPlatform() = 0;
00141     virtual void showComponent() = 0;
00142     virtual void loadComponent() = 0;
00143     virtual void quit() = 0;
00144     virtual void filterRegistry() = 0;
00145     virtual void showPlatform() = 0;
00146     virtual void loadPlatform() = 0;
00147     virtual void showRegistry() = 0;
00148     virtual void loadRegistry() = 0;
00149 
00150     // Overwrite the base implementation if needed.
00151     virtual void fsmError(const char* t, const char* s);
00152 
00153 private:
00154     BrowserFsmState* itsState;
00155     BrowserFsmState& GetState() const {return *itsState;};
00156     void SetState(BrowserFsmState& theState) {itsState=&theState;}
00157     IceUtil::Mutex mutex_;
00158 
00159     static BrowserFsmOperationState OperationState;
00160     static BrowserFsmInterfaceState InterfaceState;
00161     static BrowserFsmComponentState ComponentState;
00162     static BrowserFsmPlatformState PlatformState;
00163     static BrowserFsmRegistryState RegistryState;
00164     static BrowserFsmIdleState IdleState;
00165 };
00166 
00167 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5