1 // =========================================================================
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // =========================================================================
4 #ifndef __cpPlugins__DataObject__h__
5 #define __cpPlugins__DataObject__h__
7 #include <cpPlugins/Object.h>
13 /*! \brief Base class for all data objects.
15 * This class is intended to be the base for all data objects. It
16 * inherits from cpPlugins::Object and it serves as inputs or
17 * outputs in cpPlugins::ProcessObject objects. Think of it as edges
20 class CPPLUGINS_EXPORT DataObject
23 cpPluginsTypeMacro( DataObject, Object );
27 virtual bool IsUpdated(
28 const TTimeStamp& d = TTimeRep::now( )
31 /*! @defgroup m_Source
32 * This object's source. This soft association (i.e. it could be
33 * NULL) allows navigation over pipeline's (graph) edges.
36 void DisconnectPipeline( );
37 void SetSource( ProcessObject* source );
42 /*! In order to correctly handle memory with std::shared_pointer<>,
43 * constructors and destructor should be "invisible" to the user.
47 virtual ~DataObject( );
52 std::weak_ptr< ProcessObject > m_Source;
56 #endif // __cpPlugins__DataObject__h__