+#define cpPluginsNewMacro( x ) \
+ static Pointer New( ) \
+ { \
+ Pointer smartPtr = new x( ); \
+ smartPtr->UnRegister( ); \
+ return( smartPtr ); \
+ } \
+ virtual itk::LightObject::Pointer \
+ CreateAnother( ) const cpPlugins_OVERRIDE \
+ { \
+ itk::LightObject::Pointer smartPtr; \
+ smartPtr = x::New( ).GetPointer( ); \
+ return( smartPtr ); \
+ } \
+ Pointer Clone( ) const \
+ { \
+ Pointer rval = \
+ dynamic_cast< x* >( this->InternalClone( ).GetPointer( ) ); \
+ return( rval ); \
+ }
+