#ifndef __CPPLUGINS__INTERFACE__PARAMETERS__H__ #define __CPPLUGINS__INTERFACE__PARAMETERS__H__ #include #include #include #include #include #include #include namespace cpPlugins { namespace Interface { // Some forward declarations class ProcessObject; /** */ class cpPlugins_Interface_EXPORT Parameters : public itk::Object { public: typedef Parameters Self; typedef itk::Object Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; enum Type { String , Bool , Int , Uint , Real , Index , Point , Vector , StringList , BoolList , IntList , UintList , RealList , IndexList , PointList , VectorList , Choices , NoType }; typedef bool TBool; typedef long TInt; typedef unsigned long TUint; typedef double TReal; typedef std::string TString; // NOTE: std::pair< default, value > typedef std::pair< TString, TString > TValues; typedef std::pair< Self::Type, TValues > TParameter; typedef std::map< TString, TParameter > TParameters; public: itkNewMacro( Self ); itkTypeMacro( cpPlugins::Interface::Parameters, itk::Object ); public: // To impact pipeline virtual ProcessObject* GetProcessObject( ); virtual const ProcessObject* GetProcessObject( ) const; virtual void SetProcessObject( ProcessObject* v ); virtual void Modified( ) const; // Parameters container configuration void Clear( ); void ConfigureAsString( const TString& name, const TString& v ); void ConfigureAsBool( const TString& name, const TBool& v ); void ConfigureAsInt( const TString& name, const TInt& v ); void ConfigureAsUint( const TString& name, const TUint& v ); void ConfigureAsReal( const TString& name, const TReal& v ); template< class I > inline void ConfigureAsIndex( const TString& name, const TUint& dim, const I& v ); template< class P > inline void ConfigureAsPoint( const TString& name, const TUint& dim, const P& v ); template< class V > inline void ConfigureAsVector( const TString& name, const TUint& dim, const V& v ); void ConfigureAsStringList( const TString& name ); void ConfigureAsBoolList( const TString& name ); void ConfigureAsIntList( const TString& name ); void ConfigureAsUintList( const TString& name ); void ConfigureAsRealList( const TString& name ); void ConfigureAsIndexList( const TString& name ); void ConfigureAsPointList( const TString& name ); void ConfigureAsVectorList( const TString& name ); void ConfigureAsChoices( const TString& name, const std::vector< TString >& choices ); // Get methods void GetNames( std::vector< TString >& container ) const; Type GetType( const TString& name ) const; bool HasString( const TString& name ) const; bool HasBool( const TString& name ) const; bool HasInt( const TString& name ) const; bool HasUint( const TString& name ) const; bool HasReal( const TString& name ) const; bool HasIndex( const TString& name ) const; bool HasPoint( const TString& name ) const; bool HasVector( const TString& name ) const; bool HasStringList( const TString& name ) const; bool HasBoolList( const TString& name ) const; bool HasIntList( const TString& name ) const; bool HasUintList( const TString& name ) const; bool HasRealList( const TString& name ) const; bool HasIndexList( const TString& name ) const; bool HasPointList( const TString& name ) const; bool HasVectorList( const TString& name ) const; bool HasChoices( const TString& name ) const; TString GetString( const TString& name ) const; TBool GetBool( const TString& name ) const; TInt GetInt( const TString& name ) const; TUint GetUint( const TString& name ) const; TReal GetReal( const TString& name ) const; void GetStringList( std::vector< TString >& lst, const TString& name ) const; void GetBoolList( std::vector< TBool >& lst, const TString& name ) const; void GetIntList( std::vector< TInt >& lst, const TString& name ) const; void GetUintList( std::vector< TUint >& lst, const TString& name ) const; void GetRealList( std::vector< TReal >& lst, const TString& name ) const; void GetChoices( std::vector< TString >& choices, const TString& name ) const; TString GetSelectedChoice( const TString& name ) const; template< class I > inline I GetIndex( const TString& name, const TUint& dim ) const; template< class P > inline P GetPoint( const TString& name, const TUint& dim ) const; template< class V > inline V GetVector( const TString& name, const TUint& dim ) const; template< class I > inline void GetIndexList( std::vector< I >& lst, const TString& name, const TUint& dim ) const; template< class P > inline void GetPointList( std::vector< P >& lst, const TString& name, const TUint& dim ) const; template< class V > inline void GetVectorList( std::vector< V >& lst, const TString& name, const TUint& dim ) const; // Set methods void SetString( const TString& name, const TString& v ); void SetBool( const TString& name, const TBool& v ); void SetInt( const TString& name, const TInt& v ); void SetUint( const TString& name, const TUint& v ); void SetReal( const TString& name, const TReal& v ); template< class I > inline void SetIndex( const TString& name, const TUint& dim, const I& v ); template< class P > inline void SetPoint( const TString& name, const TUint& dim, const P& v ); template< class V > inline void SetVector( const TString& name, const TUint& dim, const V& v ); void AddToStringList( const TString& name, const TString& v ); void AddToBoolList( const TString& name, const TBool& v ); void AddToIntList( const TString& name, const TInt& v ); void AddToUintList( const TString& name, const TUint& v ); void AddToRealList( const TString& name, const TReal& v ); template< class I > inline void AddToIndexList( const TString& name, const TUint& dim, const I& v ); template< class P > inline void AddToPointList( const TString& name, const TUint& dim, const P& v ); template< class P > inline void AddToVectorList( const TString& name, const TUint& dim, const P& v ); void ClearStringList( const TString& name ); void ClearBoolList( const TString& name ); void ClearIntList( const TString& name ); void ClearUintList( const TString& name ); void ClearRealList( const TString& name ); void ClearIndexList( const TString& name ); void ClearPointList( const TString& name ); void ClearVectorList( const TString& name ); bool SetSelectedChoice( const TString& name, const TString& choice ); protected: Parameters( ); virtual ~Parameters( ); void PrintSelf( std::ostream& os, itk::Indent indent ) const; private: // Purposely not implemented Parameters( const Self& other ); Self& operator=( const Self& other ); protected: TParameters m_Parameters; ProcessObject* m_Process; }; } // ecapseman } // ecapseman #include #endif // __CPPLUGINS__INTERFACE__PARAMETERS__H__ // eof - $RCSfile$