Orocos Real-Time Toolkit  2.8.3
ExecutableInterface.hpp
Go to the documentation of this file.
1 /***************************************************************************
2  tag: The SourceWorks Tue Sep 7 00:55:18 CEST 2010 ExecutableInterface.hpp
3 
4  ExecutableInterface.hpp - description
5  -------------------
6  begin : Tue September 07 2010
7  copyright : (C) 2010 The SourceWorks
8  email : peter@thesourceworks.com
9 
10  ***************************************************************************
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU General Public *
13  * License as published by the Free Software Foundation; *
14  * version 2 of the License. *
15  * *
16  * As a special exception, you may use this file as part of a free *
17  * software library without restriction. Specifically, if other files *
18  * instantiate templates or use macros or inline functions from this *
19  * file, or you compile this file and link it with other files to *
20  * produce an executable, this file does not by itself cause the *
21  * resulting executable to be covered by the GNU General Public *
22  * License. This exception does not however invalidate any other *
23  * reasons why the executable file might be covered by the GNU General *
24  * Public License. *
25  * *
26  * This library is distributed in the hope that it will be useful, *
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
29  * Lesser General Public License for more details. *
30  * *
31  * You should have received a copy of the GNU General Public *
32  * License along with this library; if not, write to the Free Software *
33  * Foundation, Inc., 59 Temple Place, *
34  * Suite 330, Boston, MA 02111-1307 USA *
35  * *
36  ***************************************************************************/
37 
38 
39 #ifndef EXECUTABLE_INTERFACE_HPP
40 #define EXECUTABLE_INTERFACE_HPP
41 
42 #include "../rtt-fwd.hpp"
43 #include "../rtt-config.h"
44 
45 namespace RTT
46 {
47  namespace base {
48 
59  {
60  protected:
62  public:
70  void loaded(ExecutionEngine* ee) { engine = ee; this->loading();}
71 
78  void unloaded() { this->unloading(); engine = 0;}
79 
80  ExecutableInterface() : engine(0) {}
81  virtual ~ExecutableInterface() {}
82 
89  virtual void loading() {}
90 
95  bool isLoaded() { return engine != 0; }
96 
102  ExecutionEngine* getEngine() { return engine; }
103 
110  virtual bool execute() = 0;
111 
118  virtual void unloading() {}
119  };
120  }
121 }
122 #endif
void loaded(ExecutionEngine *ee)
Called by the ExecutionEngine ee to tell this object it is being loaded.
bool isLoaded()
Returns true if this object is loaded in an ExecutionEngine.
virtual void unloading()
Informs this object that it got unloaded from an ExecutionEngine.
#define RTT_API
Definition: rtt-config.h:97
An execution engine serialises (executes one after the other) the execution of all commands...
void unloaded()
Called by the ExecutionEngine ee to tell this object it is being unloaded.
virtual void loading()
Informs this object that it got loaded in an ExecutionEngine.
ExecutionEngine * getEngine()
Returns the ExecutionEngine this object is loaded into or null otherwise.
Objects that implement this interface are to be executed in the ExecutionEngine.
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
Definition: Activity.cpp:51