00001 //============================================================================== 00015 #ifndef MDS_TETRAMEMBERSHIPFUNC_H 00016 #define MDS_TETRAMEMBERSHIPFUNC_H 00017 00018 // MDSTk 00019 #include <MDSTk/Base/mdsSetup.h> 00020 00021 // VCTL 00022 #include <VectorEntity/mcentity.h> 00023 00024 #include "mdsTetraFeatures.h" 00025 00026 00027 namespace mds 00028 { 00029 namespace seg 00030 { 00031 00032 //============================================================================== 00033 /* 00034 * Global definitions. 00035 */ 00036 00038 #ifndef MDS_SEG_LOGGING_ENABLED 00039 # define MDS_SEG_LOGGING_ENABLED 00040 #endif 00041 00042 00043 //============================================================================== 00047 class CTetraMembershipFunc : public CTetraBase 00048 { 00049 public: 00051 typedef CTetraFeatures tFeatures; 00052 00054 typedef CTetraFeatures::tFeature tFeature; 00055 00057 enum { NUM_OF_FEATURES = tFeatures::NUM_OF_FEATURES }; 00058 00059 public: 00061 CTetraMembershipFunc() : m_NumOfSegments(0) {} 00062 00064 virtual ~CTetraMembershipFunc() {} 00065 00068 virtual bool operator()(vctl::MCTetra *pFirstTetrahedron) = 0; 00069 00073 virtual bool operator()(vctl::MCTetra *pFirstTetrahedron, 00074 tSize NumOfClasses 00075 ) = 0; 00076 00078 mds::tSize getNumOfSegments() { return m_NumOfSegments; } 00079 00080 protected: 00082 mds::tSize m_NumOfSegments; 00083 }; 00084 00085 00086 } // namespace seg 00087 } // namespace mds 00088 00089 #endif // MDS_TETRAMEMBERSHIPFUNC_H 00090