]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/Parameters.h
...
[cpPlugins.git] / lib / cpPlugins / Interface / Parameters.h
index a806ee7bdfdd82d42188b35f729703f558f12b72..def98e7ddb46dba8efc81ab3c6302596051d3d2f 100644 (file)
@@ -2,8 +2,10 @@
 #define __CPPLUGINS__INTERFACE__PARAMETERS__H__
 
 #include <map>
+#include <ostream>
 #include <string>
 #include <vector>
+#include <cpPlugins/cpPlugins_Export.h>
 
 namespace cpPlugins
 {
@@ -11,32 +13,47 @@ namespace cpPlugins
   {
     /**
      */
-    class Parameters
+    class cpPlugins_EXPORT Parameters
     {
+      // -------------------------------------------------------------------
+      friend std::ostream& operator<<(
+        std::ostream& os, const Parameters& p
+        )
+      {
+        Parameters::TParameters::const_iterator pIt =
+          p.m_Parameters.begin( );
+        for( ; pIt != p.m_Parameters.end( ); ++pIt )
+        {
+          os
+            << pIt->first << ": ("
+            << pIt->second.first << ", "
+            << pIt->second.second << ")"
+            << std::endl;
+
+        } // rof
+        return( os );
+      }
+
     public:
       typedef Parameters Self;
 
       enum Type
       {
-        String = 0,
-        Int,
-        Uint,
-        Real,
-        Index,
-        Point,
-        StringList,
-        IntList,
-        UintList,
-        RealList,
-        IndexList,
-        PointList
+        String    , Bool       , Int      ,
+        Uint      , Real       , Index    ,
+        Point     , StringList , BoolList ,
+        IntList   , UintList   , RealList ,
+        IndexList , PointList  , NoType
       };
 
-      typedef std::pair< Self::Type, std::string > TParameter;
-      typedef std::map< std::string, TParameter >   TParameters;
+      typedef bool          TBool;
       typedef long          TInt;
       typedef unsigned long TUint;
       typedef double        TReal;
+      typedef std::string   TString;
+
+      typedef std::pair< Self::Type, TString > TParameter;
+      typedef std::map< TString, TParameter >  TParameters;
 
     public:
       Parameters( );
@@ -45,78 +62,87 @@ namespace cpPlugins
 
       Self& operator=( const Self& other );
 
-      void Configure( const Self::Type& type, const std::string& name );
-      void SetValueAsString( const std::string& name, const std::string& v );
-      void SetValueAsInt( const std::string& name, const TInt& v );
-      void SetValueAsUint( const std::string& name, const TUint& v );
-      void SetValueAsReal( const std::string& name, const TReal& v );
-      void SetValueAsIndex( const std::string& name, const TUint& n, ... );
-      void SetValueAsPoint( const std::string& name, const TUint& n, ... );
-
-      template< class I >
-      void SetValueAsStringList(
-        const std::string& name, const I& b, const I& e
-        );
-
-      template< class I >
-      void SetValueAsIntList(
-        const std::string& name, const I& b, const I& e
-        );
-
-      template< class I >
-      void SetValueAsUintList(
-        const std::string& name, const I& b, const I& e
-        );
+      void Clear( );
+      void Configure( const Self::Type& type, const TString& name );
+      void SetValueAsString( const TString& name, const TString& v );
+      void SetValueAsBool( const TString& name, const TBool& v );
+      void SetValueAsInt( const TString& name, const TInt& v );
+      void SetValueAsUint( const TString& name, const TUint& v );
+      void SetValueAsReal( const TString& name, const TReal& v );
+      void SetValueAsIndex( const TString& name, const TUint& n, ... );
+      void SetValueAsPoint( const TString& name, const TUint& n, ... );
+
+      void AddValueToStringList( const TString& name, const TString& v );
+      void AddValueToBoolList( const TString& name, const TBool& v );
+      void AddValueToIntList( const TString& name, const TInt& v );
+      void AddValueToUintList( const TString& name, const TUint& v );
+      void AddValueToRealList( const TString& name, const TReal& v );
+      void AddValueToIndexList( const TString& name, const TUint& n, ... );
+      void AddValueToPointList( const TString& name, const TUint& n, ... );
+
+      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 );
+      
+      std::vector< TString > GetParameters( ) const;
+      Self::Type GetParameterType( const TString& name ) const;
+      const TString& GetRawValue( const TString& name ) const;
+      const TString& GetValueAsString( const TString& name ) const;
+      TBool GetValueAsBool( const TString& name ) const;
+      TInt GetValueAsInt( const TString& name ) const;
+      TUint GetValueAsUint( const TString& name ) const;
+      TReal GetValueAsReal( const TString& name ) const;
 
       template< class I >
-      void SetValueAsRealList(
-        const std::string& name, const I& b, const I& e
-        );
-
-      template< class I >
-      void SetValueAsIndexList(
-        const std::string& name, const I& b, const I& e
-        );
-
-      template< class I >
-      void SetValueAsPointList(
-        const std::string& name, const I& b, const I& e
-        );
-
-      const std::string& GetValueAsString( const std::string& name ) const;
-      TInt GetValueAsInt( const std::string& name ) const;
-      TUint GetValueAsUint( const std::string& name ) const;
-      TReal GetValueAsReal( const std::string& name ) const;
-
-      template< class I >
-      I GetValueAsIndex( const std::string& name ) const;
+      I GetValueAsIndex( const TString& name ) const;
 
       template< class P >
-      P GetValueAsPoint( const std::string& name ) const;
+      P GetValueAsPoint( const TString& name ) const;
 
       void GetValueAsStringList(
-        std::vector< std::string >& lst, const std::string& name
+        std::vector< TString >& lst, const TString& name
+        ) const;
+      void GetValueAsBoolList(
+        std::vector< TBool >& lst, const TString& name
         ) const;
       void GetValueAsIntList(
-        std::vector< TInt >& lst, const std::string& name
+        std::vector< TInt >& lst, const TString& name
         ) const;
       void GetValueAsUintList(
-        std::vector< TUint >& lst, const std::string& name
+        std::vector< TUint >& lst, const TString& name
         ) const;
       void GetValueAsRealList(
-        std::vector< TReal >& lst, const std::string& name
+        std::vector< TReal >& lst, const TString& name
         ) const;
 
       template< class I >
       void GetValueAsIndexList(
-        std::vector< I >& lst, const std::string& name
+        std::vector< I >& lst, const TString& name
         ) const;
 
       template< class P >
       void GetValueAsPointList(
-        std::vector< P >& lst, const std::string& name
+        std::vector< P >& lst, const TString& name
         ) const;
 
+      bool HasStringValue( const TString& name ) const;
+      bool HasBoolValue( const TString& name ) const;
+      bool HasIntValue( const TString& name ) const;
+      bool HasUintValue( const TString& name ) const;
+      bool HasRealValue( const TString& name ) const;
+      bool HasIndexValue( const TString& name ) const;
+      bool HasPointValue( const TString& name ) const;
+      bool HasStringListValue( const TString& name ) const;
+      bool HasBoolListValue( const TString& name ) const;
+      bool HasIntListValue( const TString& name ) const;
+      bool HasUintListValue( const TString& name ) const;
+      bool HasRealListValue( const TString& name ) const;
+      bool HasIndexListValue( const TString& name ) const;
+      bool HasPointListValue( const TString& name ) const;
 
     protected:
       TParameters m_Parameters;