--- /dev/null
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+#ifndef __fpa__Config__h__
+#define __fpa__Config__h__
+
+#include <itkMacro.h>
+
+// -------------------------------------------------------------------------
+#define fpaTraitsMacro( __t__ ) \
+ typedef __t__::TInternalTraits::TInputValue TInputValue; \
+ typedef __t__::TInternalTraits::TNeighborhood TNeighborhood; \
+ typedef __t__::TInternalTraits::TMark TMark; \
+ typedef __t__::TInternalTraits::TNode TNode; \
+ typedef __t__::TInternalTraits::TNodes TNodes; \
+ typedef __t__::TInternalTraits::TOutputValue TOutputValue; \
+ typedef __t__::TInternalTraits::TPoint TPoint; \
+ typedef __t__::TInternalTraits::TSeed TSeed; \
+ typedef __t__::TInternalTraits::TSeeds TSeeds; \
+ typedef __t__::TInternalTraits::TVertex TVertex
+
+// -------------------------------------------------------------------------
+#define fpaFilterInputMacro( __n__, __t__ ) \
+ private: \
+ unsigned int m_##__n__##Idx; \
+ public: \
+ __t__* Get##__n__( ) \
+ { \
+ return( \
+ dynamic_cast< __t__* >( \
+ this->itk::ProcessObject::GetInput( \
+ this->m_##__n__##Idx \
+ ) ) ); \
+ } \
+ const __t__* Get##__n__( ) const \
+ { \
+ return( \
+ dynamic_cast< const __t__* >( \
+ this->itk::ProcessObject::GetInput( \
+ this->m_##__n__##Idx \
+ ) ) ); \
+ } \
+ void Set##__n__( __t__* i ) \
+ { \
+ this->itk::ProcessObject::SetNthInput( this->m_##__n__##Idx, i ); \
+ }
+
+// -------------------------------------------------------------------------
+#define fpaFilterInputConfigureMacro( __n__, __t__ ) \
+ this->m_##__n__##Idx = this->GetNumberOfRequiredInputs( ); \
+ this->itk::ProcessObject::SetNumberOfRequiredInputs( \
+ this->m_##__n__##Idx + 1 \
+ )
+
+// -------------------------------------------------------------------------
+#define fpaFilterOutputMacro( __n__, __t__ ) \
+ private: \
+ unsigned int m_##__n__##Idx; \
+ public: \
+ __t__* Get##__n__( ) \
+ { \
+ return( \
+ dynamic_cast< __t__* >( \
+ this->itk::ProcessObject::GetOutput( \
+ this->m_##__n__##Idx \
+ ) ) ); \
+ } \
+ const __t__* Get##__n__( ) const \
+ { \
+ return( \
+ dynamic_cast< const __t__* >( \
+ this->itk::ProcessObject::GetOutput( \
+ this->m_##__n__##Idx \
+ ) ) ); \
+ }
+
+// -------------------------------------------------------------------------
+#define fpaFilterOutputConfigureMacro( __n__, __t__ ) \
+ this->m_##__n__##Idx = this->GetNumberOfRequiredOutputs( ); \
+ this->itk::ProcessObject::SetNumberOfRequiredOutputs( \
+ this->m_##__n__##Idx + 1 \
+ ); \
+ this->SetNthOutput( this->m_##__n__##Idx, __t__::New( ) )
+
+#endif // __fpa__Config__h__
+// eof - $RCSfile$