--- /dev/null
+#include <cpPlugins/Interface/Parameters.h>
+#include <cstdarg>
+#include <cstdlib>
+#include <sstream>
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+Parameters( )
+{
+ this->m_Parameters.clear( );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+Parameters( const Self& other )
+{
+ this->m_Parameters = other.m_Parameters;
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+~Parameters( )
+{
+ this->m_Parameters.clear( );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+Self& cpPlugins::Interface::Parameters::
+operator=( const Self& other )
+{
+ this->m_Parameters = other.m_Parameters;
+ return( *this );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+Configure( const Self::Type& type, const std::string& name )
+{
+ this->m_Parameters[ name ] = TParameter( type, "" );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetValueAsString( const std::string& name, const std::string& v )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::String )
+ return;
+
+ pIt->second.second = v;
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetValueAsInt( const std::string& name, const TInt& v )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::Int )
+ return;
+
+ std::stringstream ss;
+ ss << v;
+ pIt->second.second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetValueAsUint( const std::string& name, const TUint& v )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::Uint )
+ return;
+
+ std::stringstream ss;
+ ss << v;
+ pIt->second.second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetValueAsReal( const std::string& name, const TReal& v )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::Real )
+ return;
+
+ std::stringstream ss;
+ ss << v;
+ pIt->second.second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetValueAsIndex( const std::string& name, const TUint& n, ... )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::Index )
+ return;
+
+ va_list v_lst;
+ va_start( v_lst, n );
+
+ std::stringstream ss;
+ for( TUint i = 0; i < n; ++i )
+ ss << va_arg( v_lst, long ) << ":";
+ va_end( v_lst );
+
+ pIt->second.second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetValueAsPoint( const std::string& name, const TUint& n, ... )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::Point )
+ return;
+
+ va_list v_lst;
+ va_start( v_lst, n );
+
+ std::stringstream ss;
+ for( TUint i = 0; i < n; ++i )
+ ss << va_arg( v_lst, double ) << ":";
+ va_end( v_lst );
+
+ pIt->second.second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+const std::string& cpPlugins::Interface::Parameters::
+GetValueAsString( const std::string& name ) const
+{
+ static const std::string null_str = "";
+ TParameters::const_iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return( null_str );
+ if( pIt->second.first != Self::String )
+ return( null_str );
+
+ return( pIt->second.second );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+TInt cpPlugins::Interface::Parameters::
+GetValueAsInt( const std::string& name ) const
+{
+ static const std::string null_str = "";
+ TParameters::const_iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return( TInt( 0 ) );
+ if( pIt->second.first != Self::Int )
+ return( TInt( 0 ) );
+
+ return( std::atoi( pIt->second.second.c_str( ) ) );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+TUint cpPlugins::Interface::Parameters::
+GetValueAsUint( const std::string& name ) const
+{
+ static const std::string null_str = "";
+ TParameters::const_iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return( TUint( 0 ) );
+ if( pIt->second.first != Self::Uint )
+ return( TUint( 0 ) );
+
+ return( std::atoi( pIt->second.second.c_str( ) ) );
+}
+
+// -------------------------------------------------------------------------
+cpPlugins::Interface::Parameters::
+TReal cpPlugins::Interface::Parameters::
+GetValueAsReal( const std::string& name ) const
+{
+ static const std::string null_str = "";
+ TParameters::const_iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return( TReal( 0 ) );
+ if( pIt->second.first != Self::Real )
+ return( TReal( 0 ) );
+
+ return( std::atof( pIt->second.second.c_str( ) ) );
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+GetValueAsStringList(
+ std::vector< std::string >& lst, const std::string& name
+ ) const
+{
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+GetValueAsIntList( std::vector< TInt >& lst, const std::string& name ) const
+{
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+GetValueAsUintList( std::vector< TUint >& lst, const std::string& name ) const
+{
+}
+
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+GetValueAsRealList( std::vector< TReal >& lst, const std::string& name ) const
+{
+}
+
+// eof - $RCSfile$
--- /dev/null
+#ifndef __CPPLUGINS__INTERFACE__PARAMETERS__H__
+#define __CPPLUGINS__INTERFACE__PARAMETERS__H__
+
+#include <map>
+#include <string>
+#include <vector>
+
+namespace cpPlugins
+{
+ namespace Interface
+ {
+ /**
+ */
+ class Parameters
+ {
+ public:
+ typedef Parameters Self;
+
+ enum Type
+ {
+ String = 0,
+ Int,
+ Uint,
+ Real,
+ Index,
+ Point,
+ StringList,
+ IntList,
+ UintList,
+ RealList,
+ IndexList,
+ PointList
+ };
+
+ typedef std::pair< Self::Type, std::string > TParameter;
+ typedef std::map< std::string, TParameter > TParameters;
+ typedef long TInt;
+ typedef unsigned long TUint;
+ typedef double TReal;
+
+ public:
+ Parameters( );
+ Parameters( const Self& other );
+ virtual ~Parameters( );
+
+ 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
+ );
+
+ 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;
+
+ template< class P >
+ P GetValueAsPoint( const std::string& name ) const;
+
+ void GetValueAsStringList(
+ std::vector< std::string >& lst, const std::string& name
+ ) const;
+ void GetValueAsIntList(
+ std::vector< TInt >& lst, const std::string& name
+ ) const;
+ void GetValueAsUintList(
+ std::vector< TUint >& lst, const std::string& name
+ ) const;
+ void GetValueAsRealList(
+ std::vector< TReal >& lst, const std::string& name
+ ) const;
+
+ template< class I >
+ void GetValueAsIndexList(
+ std::vector< I >& lst, const std::string& name
+ ) const;
+
+ template< class P >
+ void GetValueAsPointList(
+ std::vector< P >& lst, const std::string& name
+ ) const;
+
+
+ protected:
+ TParameters m_Parameters;
+ };
+
+ } // ecapseman
+
+} // ecapseman
+
+#include <cpPlugins/Interface/Parameters.hxx>
+
+#endif // __CPPLUGINS__INTERFACE__PARAMETERS__H__
+
+// eof - $RCSfile$
--- /dev/null
+#ifndef __CPPLUGINS__INTERFACE__PARAMETERS__HXX__
+#define __CPPLUGINS__INTERFACE__PARAMETERS__HXX__
+
+#include <sstream>
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+SetValueAsStringList( const std::string& name, const I& b, const I& e )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::StringList )
+ return;
+
+ std::stringstream ss;
+ for( I i = b; i != e; ++i )
+ ss << *i << ":";
+ pIt->second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+SetValueAsIntList( const std::string& name, const I& b, const I& e )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::IntList )
+ return;
+
+ std::stringstream ss;
+ for( I i = b; i != e; ++i )
+ ss << *i << ":";
+ pIt->second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+SetValueAsUintList( const std::string& name, const I& b, const I& e )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::UintList )
+ return;
+
+ std::stringstream ss;
+ for( I i = b; i != e; ++i )
+ ss << *i << ":";
+ pIt->second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+SetValueAsRealList( const std::string& name, const I& b, const I& e )
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::RealList )
+ return;
+
+ std::stringstream ss;
+ for( I i = b; i != e; ++i )
+ ss << *i << ":";
+ pIt->second = ss.str( );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+SetValueAsIndexList( const std::string& name, const I& b, const I& e )
+{
+ // TODO
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+SetValueAsPointList( const std::string& name, const I& b, const I& e )
+{
+ // TODO
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+I cpPlugins::Interface::Parameters::
+GetValueAsIndex( const std::string& name ) const
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return( I( ) );
+ if( pIt->second.first != Self::Index )
+ return( I( ) );
+
+ // TODO:
+ return( I( ) );
+}
+
+// -------------------------------------------------------------------------
+template< class P >
+P cpPlugins::Interface::Parameters::
+GetValueAsPoint( const std::string& name ) const
+{
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return( P( ) );
+ if( pIt->second.first != Self::Point )
+ return( P( ) );
+
+ // TODO:
+ return( P( ) );
+}
+
+// -------------------------------------------------------------------------
+template< class I >
+void cpPlugins::Interface::Parameters::
+GetValueAsIndexList( std::vector< I >& lst, const std::string& name ) const
+{
+ lst.clear( );
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::IndexList )
+ return;
+
+ // TODO:
+}
+
+// -------------------------------------------------------------------------
+template< class P >
+void cpPlugins::Interface::Parameters::
+GetValueAsPointList( std::vector< P >& lst, const std::string& name ) const
+{
+ lst.clear( );
+ TParameters::iterator pIt = this->m_Parameters.find( name );
+ if( pIt == this->m_Parameters.end( ) )
+ return;
+ if( pIt->second.first != Self::PointList )
+ return;
+
+ // TODO:
+}
+
+#endif // __CPPLUGINS__INTERFACE__PARAMETERS__HXX__
+
+// eof - $RCSfile$