1 #ifndef __CPPLUGINS__INTERFACE__OBJECT__H__
2 #define __CPPLUGINS__INTERFACE__OBJECT__H__
5 #include <Pluma/Pluma.hpp>
7 #include <itkObjectFactory.h>
8 #include <cpPlugins/Interface/cpPlugins_Interface_Export.h>
10 // -------------------------------------------------------------------------
11 #define PLUMA_PROVIDER_HEADER_CPPLUGINS( TYPE ) \
12 PLUMA_PROVIDER_HEADER_BEGIN( TYPE ) \
13 virtual TYPE::Pointer create( ) const = 0; \
14 PLUMA_PROVIDER_HEADER_END
16 // -------------------------------------------------------------------------
17 #define PLUMA_INHERIT_PROVIDER_CPPLUGINS( TYPE, SUPER ) \
18 class TYPE##Provider \
19 : public SUPER##Provider \
22 SUPER::Pointer create( ) const \
24 TYPE::Pointer a = TYPE::New( ); \
25 SUPER::Pointer b = a.GetPointer( ); \
36 class cpPlugins_Interface_EXPORT Object
41 typedef itk::Object Superclass;
42 typedef itk::SmartPointer< Self > Pointer;
43 typedef itk::SmartPointer< const Self > ConstPointer;
47 itkTypeMacro( Object, itkObject );
50 virtual std::string GetClassName( ) const;
51 virtual std::string GetClassType( ) const;
58 // Purposely not implemented
59 Object( const Self& );
60 Self& operator=( const Self& );
64 PLUMA_PROVIDER_HEADER_CPPLUGINS( Object );
70 #endif // __CPPLUGINS__INTERFACE__OBJECT__H__