#include #include #include #include // ------------------------------------------------------------------------- #define cpPlugins_Interface_Parameters_SetMacro( TYPE ) \ void cpPlugins::Interface::Parameters:: \ SetValueAs##TYPE( const TString& name, const T##TYPE& v ) \ { \ TParameters::iterator pIt = this->m_Parameters.find( name ); \ if( pIt == this->m_Parameters.end( ) ) \ return; \ if( pIt->second.first != Self::TYPE ) \ return; \ std::stringstream ss; \ ss << v; \ pIt->second.second = ss.str( ); \ } cpPlugins_Interface_Parameters_SetMacro( String ); cpPlugins_Interface_Parameters_SetMacro( Bool ); cpPlugins_Interface_Parameters_SetMacro( Int ); cpPlugins_Interface_Parameters_SetMacro( Uint ); cpPlugins_Interface_Parameters_SetMacro( Real ); // ------------------------------------------------------------------------- #define cpPlugins_Interface_Parameters_SetArrayMacro( TYPE, ATYPE ) \ void cpPlugins::Interface::Parameters:: \ SetValueAs##TYPE( const TString& name, const TUint& n, ... ) \ { \ TParameters::iterator pIt = this->m_Parameters.find( name ); \ if( pIt == this->m_Parameters.end( ) ) \ return; \ if( pIt->second.first != Self::TYPE ) \ 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, ATYPE ) << ","; \ va_end( v_lst ); \ pIt->second.second = ss.str( ); \ } cpPlugins_Interface_Parameters_SetArrayMacro( Index, int ); cpPlugins_Interface_Parameters_SetArrayMacro( Point, double ); // ------------------------------------------------------------------------- #define cpPlugins_Interface_Parameters_SetListMacro( TYPE ) \ void cpPlugins::Interface::Parameters:: \ AddValueTo##TYPE##List( const TString& name, const T##TYPE& v ) \ { \ TParameters::iterator pIt = this->m_Parameters.find( name ); \ if( pIt == this->m_Parameters.end( ) ) \ return; \ if( pIt->second.first != Self::TYPE##List ) \ return; \ std::stringstream ss; \ ss << pIt->second.second << v << "#"; \ pIt->second.second = ss.str( ); \ } cpPlugins_Interface_Parameters_SetListMacro( String ); cpPlugins_Interface_Parameters_SetListMacro( Bool ); cpPlugins_Interface_Parameters_SetListMacro( Int ); cpPlugins_Interface_Parameters_SetListMacro( Uint ); cpPlugins_Interface_Parameters_SetListMacro( Real ); // ------------------------------------------------------------------------- #define cpPlugins_Interface_Parameters_SetArrayListMacro( TYPE, ATYPE ) \ void cpPlugins::Interface::Parameters:: \ AddValueTo##TYPE##List( const TString& name, const TUint& n, ... ) \ { \ TParameters::iterator pIt = this->m_Parameters.find( name ); \ if( pIt == this->m_Parameters.end( ) ) \ return; \ if( pIt->second.first != Self::TYPE##List ) \ return; \ va_list v_lst; \ va_start( v_lst, n ); \ std::stringstream ss; \ ss << pIt->second.second; \ for( TUint i = 0; i < n; ++i ) \ ss << va_arg( v_lst, ATYPE ) << ","; \ va_end( v_lst ); \ ss << "#"; \ pIt->second.second = ss.str( ); \ } cpPlugins_Interface_Parameters_SetArrayListMacro( Index, int ); cpPlugins_Interface_Parameters_SetArrayListMacro( Point, double ); // ------------------------------------------------------------------------- #define cpPlugins_Interface_Parameters_ClearListMacro( TYPE ) \ void cpPlugins::Interface::Parameters:: \ Clear##TYPE##List( const TString& name ) \ { \ TParameters::iterator pIt = this->m_Parameters.find( name ); \ if( pIt == this->m_Parameters.end( ) ) \ return; \ if( pIt->second.first != Self::TYPE##List ) \ return; \ pIt->second.second = ""; \ } cpPlugins_Interface_Parameters_ClearListMacro( String ); cpPlugins_Interface_Parameters_ClearListMacro( Bool ); cpPlugins_Interface_Parameters_ClearListMacro( Int ); cpPlugins_Interface_Parameters_ClearListMacro( Uint ); cpPlugins_Interface_Parameters_ClearListMacro( Real ); cpPlugins_Interface_Parameters_ClearListMacro( Index ); cpPlugins_Interface_Parameters_ClearListMacro( Point ); // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: Parameters( ) { this->Clear( ); } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: Parameters( const Self& other ) { this->m_Parameters = other.m_Parameters; } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: ~Parameters( ) { this->Clear( ); } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: Self& cpPlugins::Interface::Parameters:: operator=( const Self& other ) { this->m_Parameters = other.m_Parameters; return( *this ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: Clear( ) { this->m_Parameters.clear( ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: Configure( const Self::Type& type, const TString& name ) { this->m_Parameters[ name ] = TParameter( type, "" ); } // ------------------------------------------------------------------------- std::vector< cpPlugins::Interface::Parameters::TString > cpPlugins::Interface::Parameters:: GetParameters( ) const { std::vector< TString > parameters; TParameters::const_iterator pIt = this->m_Parameters.begin( ); for( ; pIt != this->m_Parameters.end( ); ++pIt ) parameters.push_back( pIt->first ); return( parameters ); } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: Type cpPlugins::Interface::Parameters:: GetParameterType( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return( Self::NoType ); return( pIt->second.first ); } // ------------------------------------------------------------------------- const cpPlugins::Interface::Parameters:: TString& cpPlugins::Interface::Parameters:: GetRawValue( const TString& name ) const { static const TString null_str = ""; TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return( null_str ); return( pIt->second.second ); } // ------------------------------------------------------------------------- const cpPlugins::Interface::Parameters:: TString& cpPlugins::Interface::Parameters:: GetValueAsString( const TString& name ) const { static const TString 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:: TBool cpPlugins::Interface::Parameters:: GetValueAsBool( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return( TBool( false ) ); if( pIt->second.first != Self::Bool ) return( TBool( false ) ); return( TBool( std::atoi( pIt->second.second.c_str( ) ) == 1 ) ); } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: TInt cpPlugins::Interface::Parameters:: GetValueAsInt( const TString& name ) const { 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( TInt( std::atoi( pIt->second.second.c_str( ) ) ) ); } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: TUint cpPlugins::Interface::Parameters:: GetValueAsUint( const TString& name ) const { 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( TUint( std::atoi( pIt->second.second.c_str( ) ) ) ); } // ------------------------------------------------------------------------- cpPlugins::Interface::Parameters:: TReal cpPlugins::Interface::Parameters:: GetValueAsReal( const TString& name ) const { 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( TReal( std::atof( pIt->second.second.c_str( ) ) ) ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: GetValueAsStringList( std::vector< TString >& lst, const TString& name ) const { lst.clear( ); TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return; if( pIt->second.first != Self::StringList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, '#' ) ) if( token != "" ) lst.push_back( token ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: GetValueAsBoolList( std::vector< TBool >& lst, const TString& name ) const { lst.clear( ); TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return; if( pIt->second.first != Self::BoolList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, '#' ) ) if( token != "" ) lst.push_back( TBool( std::atoi( token.c_str( ) ) == 1 ) ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: GetValueAsIntList( std::vector< TInt >& lst, const TString& name ) const { lst.clear( ); TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return; if( pIt->second.first != Self::IntList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, '#' ) ) if( token != "" ) lst.push_back( TInt( std::atoi( token.c_str( ) ) ) ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: GetValueAsUintList( std::vector< TUint >& lst, const TString& name ) const { lst.clear( ); TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return; if( pIt->second.first != Self::UintList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, '#' ) ) if( token != "" ) lst.push_back( TUint( std::atoi( token.c_str( ) ) ) ); } // ------------------------------------------------------------------------- void cpPlugins::Interface::Parameters:: GetValueAsRealList( std::vector< TReal >& lst, const TString& name ) const { lst.clear( ); TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt == this->m_Parameters.end( ) ) return; if( pIt->second.first != Self::RealList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, '#' ) ) if( token != "" ) lst.push_back( TReal( std::atof( token.c_str( ) ) ) ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasStringValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::String ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasBoolValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::Bool ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasIntValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::Int ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasUintValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::Uint ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasRealValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::Real ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasIndexValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::Index ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasPointValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::Point ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasStringListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::StringList ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasBoolListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::BoolList ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasIntListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::IntList ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasUintListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::UintList ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasRealListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::RealList ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasIndexListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::IndexList ); return( false ); } // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: HasPointListValue( const TString& name ) const { TParameters::const_iterator pIt = this->m_Parameters.find( name ); if( pIt != this->m_Parameters.end( ) ) return( pIt->second.first == Self::PointList ); return( false ); } // eof - $RCSfile$