#ifndef __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ #define __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Parameters:: ConfigureAsIndex( const TString& name, const TUint& dim, const I& v ) { std::stringstream str; str << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; std::string s = str.str( ); this->m_Parameters[ name ] = TParameter( Self::Index, TValues( s, s ) ); this->Modified( ); } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: ConfigureAsPoint( const TString& name, const TUint& dim, const P& v ) { std::stringstream str; str << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; std::string s = str.str( ); this->m_Parameters[ name ] = TParameter( Self::Point, TValues( s, s ) ); this->Modified( ); } // ------------------------------------------------------------------------- template< class I > I cpPlugins::Interface::Parameters:: GetIndex( const TString& name, const TUint& dim ) const { I v; TParameters::const_iterator i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::Index ) { std::istringstream str( i->second.second.second ); std::string token; unsigned int d = 0; while( std::getline( str, token, ';' ) && d < dim ) { v[ d ] = std::atoi( token.c_str( ) ); d++; } // elihw return( v ); } // fi } // fi // If parameter not found for( unsigned int d = 0; d < dim; ++d ) v[ d ] = 0; return( v ); } // ------------------------------------------------------------------------- template< class P > P cpPlugins::Interface::Parameters:: GetPoint( const TString& name, const TUint& dim ) const { P v; TParameters::const_iterator i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::Point ) { std::istringstream str( i->second.second.second ); std::string token; unsigned int d = 0; while( std::getline( str, token, ';' ) && d < dim ) { v[ d ] = std::atof( token.c_str( ) ); d++; } // elihw return( v ); } // fi } // fi // If parameter not found for( unsigned int d = 0; d < dim; ++d ) v[ d ] = float( 0 ); return( v ); } // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Parameters:: GetIndexList( std::vector< I >& lst, const TString& name, const TUint& dim ) const { lst.clear( ); TParameters::const_iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first == Self::IndexList ) return; std::istringstream str( i->second.second.second ); std::string token; unsigned int d = 0; while( std::getline( str, token, '#' ) ) { std::istringstream str2( token ); std::string token2; unsigned int d = 0; I v; while( std::getline( str2, token2, ';' ) && d < dim ) { v[ d ] = std::atoi( token.c_str( ) ); d++; } // elihw lst.push_back( v ); } // elihw } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: GetPointList( std::vector< P >& lst, const TString& name, const TUint& dim ) const { lst.clear( ); TParameters::const_iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first == Self::PointList ) return; std::istringstream str( i->second.second.second ); std::string token; unsigned int d = 0; while( std::getline( str, token, '#' ) ) { std::istringstream str2( token ); std::string token2; unsigned int d = 0; P v; while( std::getline( str2, token2, ';' ) && d < dim ) { v[ d ] = std::atof( token.c_str( ) ); d++; } // elihw lst.push_back( v ); } // elihw } // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Parameters:: SetIndex( const TString& name, const TUint& dim, const I& v ) { TParameters::iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first != Self::Index ) return; std::stringstream str; str << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second.second = str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: SetPoint( const TString& name, const TUint& dim, const P& v ) { TParameters::iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first != Self::Point ) return; std::stringstream str; str << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second.second = str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Parameters:: AddToIndexList( const TString& name, const TUint& dim, const I& v ) { TParameters::iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first != Self::IndexList ) return; std::stringstream str; if( i->second.second.second == "" ) str << v[ 0 ]; else str << "#" << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second.second += str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: AddToPointList( const TString& name, const TUint& dim, const P& v ) { TParameters::iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first != Self::PointList ) return; std::stringstream str; if( i->second.second.second == "" ) str << v[ 0 ]; else str << "#" << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second.second += str.str( ); this->Modified( ); } #endif // __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ // eof - $RCSfile$