]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/DataStructures/Skeleton.h
...
[cpPlugins.git] / lib / cpExtensions / DataStructures / Skeleton.h
1 #ifndef __cpExtensions__DataStructures__Skeleton__h__
2 #define __cpExtensions__DataStructures__Skeleton__h__
3
4 #include <cpExtensions/DataStructures/Graph.h>
5 #include <cpExtensions/DataStructures/PolyLineParametricPath.h>
6
7 namespace cpExtensions
8 {
9   namespace DataStructures
10   {
11     /**
12      */
13     template< unsigned int _VDim >
14     class Skeleton
15       : public Graph< typename PolyLineParametricPath< _VDim >::TIndex, typename PolyLineParametricPath< _VDim >::Pointer, typename PolyLineParametricPath< _VDim >::TIndex, typename PolyLineParametricPath< _VDim >::TIndex::LexicographicCompare >
16     {
17     public:
18       typedef PolyLineParametricPath< _VDim >       TPath;
19       typedef typename TPath::TIndex                TIndex;
20       typedef typename TIndex::LexicographicCompare TIndexCompare;
21       typedef typename TPath::Pointer TPathPointer;
22
23       typedef Graph< TIndex, TPathPointer, TIndex, TIndexCompare > Superclass;
24       typedef Skeleton                        Self;
25       typedef itk::SmartPointer< Self >       Pointer;
26       typedef itk::SmartPointer< const Self > ConstPointer;
27
28     public:
29       itkNewMacro( Self );
30       itkTypeMacro( Skeleton, Graph );
31
32     public:
33       void AddBranch( TPath* path );
34       const TPath* GetBranch( const TIndex& a, const TIndex& b ) const;
35
36     protected:
37       Skeleton( );
38       virtual ~Skeleton( );
39
40     private:
41       // Purposely not implemented
42       Skeleton( const Self& other );
43       Self& operator=( const Self& other );
44     };
45
46   } // ecapseman
47
48 } // ecapseman
49
50 #ifndef ITK_MANUAL_INSTANTIATION
51 #  include <cpExtensions/DataStructures/Skeleton.hxx>
52 #endif // ITK_MANUAL_INSTANTIATION
53
54 #endif // __cpExtensions__DataStructures__Skeleton__h__
55
56 // eof - $RCSfile$