#ifndef __fpa__Base__SeedsInterface__h__
#define __fpa__Base__SeedsInterface__h__
-#include <functional>
-#include <set>
-#include <vector>
-
+#include <fpa/Config.h>
#include <itkConceptChecking.h>
#include <itkProcessObject.h>
{
/**
*/
- template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare = std::greater< _TVertex > >
+ template< class _TTraits >
class SeedsInterface
{
public:
+ typedef SeedsInterface Self;
+ typedef _TTraits TTraits;
+ fpa_Base_TraitTypes( typename TTraits );
+
+ private:
itkConceptMacro(
Check_TFrontId,
- ( itk::Concept::IsUnsignedInteger< _TFrontId > )
+ ( itk::Concept::IsUnsignedInteger< TFrontId > )
);
public:
- typedef _TVertex TVertex;
- typedef _TPoint TPoint;
- typedef _TInputValue TInputValue;
- typedef _TOutputValue TOutputValue;
- typedef _TFrontId TFrontId;
- typedef _TCompare TCompare;
- typedef SeedsInterface Self;
-
- struct TSeed
- {
- TVertex Vertex;
- TPoint Point;
- bool IsPoint;
- bool IsUnified;
- TSeed( ) : IsUnified( false ) { }
- };
- typedef std::vector< TSeed > TSeeds;
-
- struct TNode
- {
- TVertex Vertex;
- TVertex Parent;
- TFrontId FrontId;
-
- // Hack to hide the fact that seed values need to be initialized
- mutable TOutputValue Value;
- };
- struct TNodeCompare
- {
- bool operator()( const TNode& a, const TNode& b ) const
- {
- TCompare cmp;
- return( cmp( a.Vertex, b.Vertex ) );
- }
- };
- typedef std::set< TNode, TNodeCompare > TNodes;
-
- public:
+ TSeeds& GetSeeds( );
const TSeeds& GetSeeds( ) const;
virtual void AddSeed( const TVertex& seed );