1 #ifndef __cpExtensions__DataStructures__Skeleton__h__
2 #define __cpExtensions__DataStructures__Skeleton__h__
4 #include <cpExtensions/DataStructures/Graph.h>
5 #include <cpExtensions/DataStructures/PolyLineParametricPath.h>
10 namespace DataStructures
14 template< unsigned int _VDim >
16 : public Graph< typename PolyLineParametricPath< _VDim >::TIndex, typename PolyLineParametricPath< _VDim >::Pointer, typename PolyLineParametricPath< _VDim >::TIndex, typename PolyLineParametricPath< _VDim >::TIndex::LexicographicCompare >
19 typedef PolyLineParametricPath< _VDim > TPath;
20 typedef typename TPath::TIndex TIndex;
21 typedef typename TIndex::LexicographicCompare TIndexCompare;
22 typedef typename TPath::Pointer TPathPointer;
24 itkStaticConstMacro( Dimension, unsigned int, _VDim );
26 typedef Graph< TIndex, TPathPointer, TIndex, TIndexCompare > Superclass;
27 typedef Skeleton Self;
28 typedef itk::SmartPointer< Self > Pointer;
29 typedef itk::SmartPointer< const Self > ConstPointer;
33 itkTypeMacro( Skeleton, Graph );
36 void AddBranch( TPath* path );
37 const TPath* GetBranch( const TIndex& a, const TIndex& b ) const;
39 std::vector< TIndex > GetEndPoints( ) const;
40 std::vector< TIndex > GetBifurcations( ) const;
47 // Purposely not implemented
48 Skeleton( const Self& other );
49 Self& operator=( const Self& other );
56 #ifndef ITK_MANUAL_INSTANTIATION
57 # include <cpExtensions/DataStructures/Skeleton.hxx>
58 #endif // ITK_MANUAL_INSTANTIATION
60 #endif // __cpExtensions__DataStructures__Skeleton__h__