DataFlowInterface.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef ORO_EXECUTION_DATA_FLOW_INTERFACE_HPP
00040 #define ORO_EXECUTION_DATA_FLOW_INTERFACE_HPP
00041
00042 #include <vector>
00043 #include <map>
00044 #include <string>
00045 #include "PortInterface.hpp"
00046 #include "OperationInterface.hpp"
00047
00048 namespace RTT
00049 {
00050
00055 class RTT_API DataFlowInterface
00056 {
00057 public:
00061 typedef std::vector<PortInterface*> Ports;
00062
00066 typedef std::vector<std::string> PortNames;
00067
00073 DataFlowInterface(OperationInterface* parent = 0);
00074
00075 ~DataFlowInterface();
00076
00084 bool addPort(PortInterface* port);
00085
00095 bool addEventPort(PortInterface* port, PortInterface::NewDataOnPortEvent::SlotFunction callback = PortInterface::NewDataOnPortEvent::SlotFunction() );
00096
00101 const Ports& getEventPorts() const;
00102
00109 bool addPort(PortInterface* port, std::string description);
00110
00120 bool addEventPort(PortInterface* port, std::string description, PortInterface::NewDataOnPortEvent::SlotFunction callback = PortInterface::NewDataOnPortEvent::SlotFunction() );
00121
00126 void removePort(const std::string& name);
00127
00132 Ports getPorts() const;
00133
00139 PortNames getPortNames() const;
00140
00145 PortNames getNames() const;
00146
00152 PortInterface* getPort(const std::string& name) const;
00153
00161 std::string getPortDescription(const std::string& name) const;
00162
00170 OperationInterface* createPortObject(const std::string& name);
00171
00175 template< class Type>
00176 Type* getPortType(const std::string& name) {
00177 return dynamic_cast<Type*>( this->getPort(name) );
00178 }
00179
00184 void clear();
00185 protected:
00186 typedef std::vector<std::pair<PortInterface*,std::string> > PortStore;
00187 Ports eports;
00188 PortStore mports;
00189 OperationInterface* mparent;
00190
00191 };
00192
00193 }
00194
00195 #endif