1 // =========================================================================
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // =========================================================================
4 #ifndef __cpPlugins__Pipeline__h__
5 #define __cpPlugins__Pipeline__h__
9 #include <cpPlugins/Filter.h>
10 #include <cpPlugins/Manager.h>
16 class CPPLUGINS_EXPORT Pipeline
19 cpPluginsTypeMacro( Pipeline, Filter );
23 typedef std::pair< std::string, std::string > TEdge;
24 typedef std::map< std::string, TEdge > TPortRelations;
25 typedef std::map< std::string, ProcessObject::SharedPtr > TNodes;
32 typedef std::set< TEdge > TEdges;
33 typedef std::map< std::string, TEdges > TRow;
34 typedef std::map< std::string, TRow > TMatrix;
38 virtual ~TAdjMatrix( );
41 const std::string& oObj, const std::string& dObj,
42 const std::string& oPort, const std::string& dPort
45 TEdges& operator()( const std::string& o, const std::string& d );
46 const TEdges& operator()(
47 const std::string& o, const std::string& d
50 template< class _TXMLNode >
51 void SaveXML( _TXMLNode* node ) const;
60 ProcessObject* CreateNode(
61 const std::string& class_name, const std::string& node_name = ""
63 ProcessObject* GetNode( const std::string& name );
64 const ProcessObject* GetNode( const std::string& name ) const;
67 const std::string& oObj, const std::string& dObj,
68 const std::string& oPort, const std::string& dPort
70 void Connect( const std::string& src, const std::string& dest );
72 void LoadXML( const std::string& fname );
73 void SaveXML( const std::string& fname ) const;
75 virtual bool GetExecutionDebug( ) const override;
76 virtual void SetExecutionDebug( bool d ) override;
78 virtual void ModifiedInValue( const std::string& name ) override;
79 virtual void ModifiedInSet( const std::string& name ) override;
80 virtual void ModifiedInSequence( const std::string& name ) override;
81 virtual void ModifiedOutValue( const std::string& name ) override;
82 virtual void ModifiedOutSet( const std::string& name ) override;
83 virtual void ModifiedOutSequence( const std::string& name ) override;
84 virtual void ModifiedChoice( const std::string& name ) override;
88 const std::string& input,
89 const std::string& node,
90 const std::string& port );
92 virtual void SetInput(
93 const std::string& name, DataObject* data
95 virtual DataObject* GetInput(
96 const std::string& name, const unsigned int id
98 virtual const DataObject* GetInput(
99 const std::string& name, const unsigned int id
101 virtual bool HasInput( const std::string& name ) const override;
104 const std::string& output,
105 const std::string& node,
106 const std::string& port );
108 virtual DataObject* GetOutput( const std::string& name ) override;
109 virtual const DataObject* GetOutput(
110 const std::string& name
115 virtual ~Pipeline( );
117 virtual void _GenerateData( ) override;
120 Filter* src, const std::string& srcPort,
121 ProcessObject* dest, const std::string& destPort
125 Functor* functor, const std::string& functorValue,
126 ProcessObject* dest, const std::string& destValue
129 static void _ParseComponentName(
130 const std::string& name,
132 std::string& component
137 std::string m_Description;
139 TAdjMatrix m_AdjMatrix;
140 TPortRelations m_InputRelations;
141 TPortRelations m_OutputRelations;
143 bool m_PipelineExecutionDebug;
148 #endif // __cpPlugins__Pipeline__h__