📄 optionmanager.cc
字号:
////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, Yusuke Miyao// You may distribute under the terms of the Artistic License.//// OptionManager.cc - Option manager// $Id: OptionManager.cc,v 1.3 2003/05/14 06:01:56 yusuke Exp $////////////////////////////////////////////////////////////////////////#include <amis/OptionManager.h>#include <amis/Option.h>#include <iostream>AMIS_NAMESPACE_BEGINusing namespace std;void OptionManager::initOption( OptionBase* opt ) { //if ( opt->getName().empty() ) throw IllegalOptionError( "Empty option name" ); if( name_hash.find( opt->getName() ) != name_hash.end() ) { std::cerr << "Warning: you are about to duplicate property: " << opt->getName() << std::endl; } if( long_hash.find( opt->getLongName() ) != long_hash.end() ) { std::cerr << "Warning: you are about to duplicate long name: " << opt->getLongName() << std::endl; } if( short_hash.find( opt->getShortName() ) != short_hash.end() ) { std::cerr << "Warning: you are about to duplicate short name: " << opt->getShortName() << std::endl; } option_vector.push_back( opt ); if ( ! opt->getName().empty() ) name_hash[ opt->getName() ] = opt; if ( ! opt->getLongName().empty() ) long_hash[ opt->getLongName() ] = opt; if ( ! opt->getShortName().empty() ) short_hash[ opt->getShortName() ] = opt;}std::string OptionManager::getShortDescription( void ) const { OStringStream os; os << "Options:\n"; for ( std::map< std::string, OptionBase* >::const_iterator it = short_hash.begin(); it != short_hash.end(); ++it ) { os << it->second->getShortDescription() << '\n'; } return os.str();}std::string OptionManager::getFullDescription( void ) const { OStringStream os; os << "List of available options\n"; os << "======================================================================\n"; os << "PROPERTY_NAME <args>, command line longname <args>, shortname <args>\n"; os << " [argument type description]\n"; os << " [description]\n"; os << " [default value description]\n"; os << "======================================================================\n"; for ( std::map< std::string, OptionBase* >::const_iterator it = name_hash.begin(); it != name_hash.end(); ++it ) { os << it->second->getFullDescription() << '\n'; } return os.str();}std::string OptionManager::getSpecificationStatus( void ) const { OStringStream os; for ( std::map< std::string, OptionBase* >::const_iterator it = name_hash.begin(); it != name_hash.end(); ++it ) { os << it->second->getSpecificationStatus() << '\n'; } return os.str();}void OptionManager::setOption( const std::string& name, const std::string& value ) { std::map< std::string, OptionBase* >::iterator it = name_hash.find( name ); if ( it == name_hash.end() ) { throw IllegalOptionError( "Unknown option: " + name ); } it->second->setValueFromString( value );}void OptionManager::setOptionLongName( const std::string& name, const std::string& value ) { std::map< std::string, OptionBase* >::iterator it = long_hash.find( name ); if ( it == long_hash.end() ) { throw IllegalOptionError( "Unknown option: " + name ); } it->second->setValueFromString( value );}void OptionManager::setOptionShortName( const std::string& name, const std::string& value ) { std::map< std::string, OptionBase* >::iterator it = short_hash.find( name ); if ( it == short_hash.end() ) { throw IllegalOptionError( "Unknown option: " + name ); } it->second->setValueFromString( value );}void OptionManager::resetToInit( void ) { for ( std::vector< OptionBase* >::iterator it = option_vector.begin(); it != option_vector.end(); ++it ) { (*it)->resetToInit(); }}AMIS_NAMESPACE_END// end of OptionManager.cc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -