#ifndef __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ #define __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ // ------------------------------------------------------------------------- template< class I > I cpPlugins::Interface::Parameters:: GetIndex( const std::string& name, const unsigned int& dim ) const { I v; auto i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::Index ) { std::istringstream str( i->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 std::string& name, const unsigned int& dim ) const { P v; auto i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::Point ) { std::istringstream str( i->second.second ); std::string token; unsigned int d = 0; while( std::getline( str, token, ';' ) && d < dim ) { std::istringstream tok_str( token ); tok_str >> v[ d ]; 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 V > V cpPlugins::Interface::Parameters:: GetVector( const std::string& name, const unsigned int& dim ) const { V v; auto i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::Vector ) { std::istringstream str( i->second.second ); std::string token; unsigned int d = 0; while( std::getline( str, token, ';' ) && d < dim ) { std::istringstream tok_str( token ); tok_str >> v[ d ]; 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:: SetIndex( const std::string& name, const unsigned int& 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 = str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: SetPoint( const std::string& name, const unsigned int& 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 = str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class V > void cpPlugins::Interface::Parameters:: SetVector( const std::string& name, const unsigned int& dim, const V& v ) { TParameters::iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first != Self::Vector ) return; std::stringstream str; str << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second = str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class I > std::vector< I > cpPlugins::Interface::Parameters:: GetIndexList( const std::string& name, const unsigned int& dim ) const { std::vector< I > lst; auto i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::IndexList ) { std::istringstream str( i->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 } // fi } // fi return( lst ); } // ------------------------------------------------------------------------- template< class P > std::vector< P > cpPlugins::Interface::Parameters:: GetPointList( const std::string& name, const unsigned int& dim ) const { std::vector< P > lst; auto i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::PointList ) { std::istringstream str( i->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 ) { std::istringstream tok_str( token ); tok_str >> v[ d ]; d++; } // elihw lst.push_back( v ); } // elihw } // fi } // fi return( lst ); } // ------------------------------------------------------------------------- template< class V > std::vector< V > cpPlugins::Interface::Parameters:: GetVectorList( const std::string& name, const unsigned int& dim ) const { std::vector< V > lst; auto i = this->m_Parameters.find( name ); if( i != this->m_Parameters.end( ) ) { if( i->second.first == Self::VectorList ) { std::istringstream str( i->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; V v; while( std::getline( str2, token2, ';' ) && d < dim ) { std::istringstream tok_str( token ); tok_str >> v[ d ]; d++; } // elihw lst.push_back( v ); } // elihw } // fi } // fi return( lst ); } // ------------------------------------------------------------------------- template< class I > void cpPlugins::Interface::Parameters:: AddToIndexList( const std::string& name, const unsigned int& 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 == "" ) str << v[ 0 ]; else str << "#" << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second += str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class P > void cpPlugins::Interface::Parameters:: AddToPointList( const std::string& name, const unsigned int& 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 == "" ) str << v[ 0 ]; else str << "#" << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second += str.str( ); this->Modified( ); } // ------------------------------------------------------------------------- template< class V > void cpPlugins::Interface::Parameters:: AddToVectorList( const std::string& name, const unsigned int& dim, const V& v ) { TParameters::iterator i = this->m_Parameters.find( name ); if( i == this->m_Parameters.end( ) ) return; if( i->second.first != Self::VectorList ) return; std::stringstream str; if( i->second.second == "" ) str << v[ 0 ]; else str << "#" << v[ 0 ]; for( unsigned int d = 1; d < dim; ++d ) str << ";" << v[ d ]; i->second.second += str.str( ); this->Modified( ); } #endif // __CPPLUGINS__INTERFACE__PARAMETERS__HXX__ // eof - $RCSfile$