+ this->Modified( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+ConfigureAsString( const TString& name, const TString& v )
+{
+ this->m_Parameters[ name ] =
+ TParameter( Self::String, TValues( v, v ) );
+ this->Modified( );
+}
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Parameters_Configure( Y ) \
+ void cpPlugins::Interface::Parameters:: \
+ ConfigureAs##Y( const TString& name, const T##Y& v ) \
+ { \
+ std::stringstream str; \
+ str << v; \
+ std::string s = str.str( ); \
+ this->m_Parameters[ name ] = \
+ TParameter( Self::Y, TValues( s, s ) ); \
+ this->Modified( ); \
+ }
+
+cpPlugins_Parameters_Configure( Bool );
+cpPlugins_Parameters_Configure( Int );
+cpPlugins_Parameters_Configure( Uint );
+cpPlugins_Parameters_Configure( Real );
+
+// -------------------------------------------------------------------------
+#define cpPlugins_Parameters_List_Configure( Y ) \
+ void cpPlugins::Interface::Parameters:: \
+ ConfigureAs##Y##List( const TString& name ) \
+ { \
+ this->m_Parameters[ name ] = \
+ TParameter( Self::Y##List, TValues( "", "" ) ); \
+ this->Modified( ); \
+ }
+
+cpPlugins_Parameters_List_Configure( String );
+cpPlugins_Parameters_List_Configure( Bool );
+cpPlugins_Parameters_List_Configure( Int );
+cpPlugins_Parameters_List_Configure( Uint );
+cpPlugins_Parameters_List_Configure( Real );
+cpPlugins_Parameters_List_Configure( Index );
+cpPlugins_Parameters_List_Configure( Point );
+cpPlugins_Parameters_List_Configure( Vector );
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+ConfigureAsChoices(
+ const TString& name, const std::vector< TString >& choices
+ )
+{
+ // It is invalid not to give choices when configuring
+ if( choices.size( ) == 0 )
+ return;
+
+ std::stringstream str_choices;
+ str_choices << choices[ 0 ];
+ for( unsigned int i = 1; i < choices.size( ); ++i )
+ str_choices << "#" << choices[ i ];
+ this->m_Parameters[ name ] =
+ TParameter( Self::Choices, TValues( str_choices.str( ), "" ) );
+ this->Modified( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+GetNames( std::vector< TString >& container ) const
+{
+ container.clear( );
+ TParameters::const_iterator i = this->m_Parameters.begin( );
+ for( ; i != this->m_Parameters.end( ); ++i )
+ container.push_back( i->first );