#ifndef __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ #define __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ #include #include #include // ------------------------------------------------------------------------- #define cpPlugins_Interface_Parameters_SetIndexOrPointMacro( NAME, TYPE ) \ template< class T > \ T cpPlugins::Interface::Parameters:: \ GetValueAs##NAME( const TString& name ) const \ { \ T val; \ TParameters::const_iterator pIt = this->m_Parameters.find( name ); \ if( pIt != this->m_Parameters.end( ) ) \ { \ if( pIt->second.first == Self::NAME ) \ { \ std::istringstream ss( pIt->second.second ); \ std::string token; \ unsigned int i = 0; \ while( std::getline( ss, token, ',' ) ) \ { \ if( token != "" ) \ val[ i++ ] = TYPE( std::atof( token.c_str( ) ) ); \ } \ } \ } \ return( val ); \ } cpPlugins_Interface_Parameters_SetIndexOrPointMacro( Index, long ); cpPlugins_Interface_Parameters_SetIndexOrPointMacro( Point, double ); // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Parameters:: GetValueAsIndexList( std::vector< I >& 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::IndexList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, ':' ) ) { if( token != "" ) { std::istringstream ts( token ); std::string text; unsigned int i = 0; I idx; while( std::getline( ts, text, ',' ) ) if( text != "" ) idx[ i++ ] = std::atoi( text.c_str( ) ); lst.push_back( idx ); } // fi } // elihw } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: GetValueAsPointList( std::vector< P >& 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::PointList ) return; std::istringstream ss( pIt->second.second ); std::string token; while( std::getline( ss, token, ':' ) ) { if( token != "" ) { std::istringstream ts( token ); std::string text; unsigned int i = 0; P pnt; while( std::getline( ts, text, ',' ) ) if( text != "" ) pnt[ i++ ] = std::atof( text.c_str( ) ); lst.push_back( pnt ); } // fi } // elihw } #endif // __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ // eof - $RCSfile$