|  |  | @ -39,6 +39,7 @@ | 
			
		
	
		
			
				
					|  |  |  | #include "storm/settings/modules/MultiplierSettings.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/utility/macros.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/utility/file.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/utility/string.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/settings/Option.h"
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | namespace storm { | 
			
		
	
	
		
			
				
					|  |  | @ -82,6 +83,18 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |         void SettingsManager::handleUnknownOption(std::string const& optionName, bool isShort) const { | 
			
		
	
		
			
				
					|  |  |  |             std::string optionNameWithDashes = (isShort ? "-" : "--") + optionName; | 
			
		
	
		
			
				
					|  |  |  |             storm::utility::string::SimilarStrings similarStrings(optionNameWithDashes, 0.6, false); | 
			
		
	
		
			
				
					|  |  |  |             for (auto const& longOption : longNameToOptions) { | 
			
		
	
		
			
				
					|  |  |  |                 similarStrings.add("--" + longOption.first); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             for (auto const& shortOption : shortNameToOptions) { | 
			
		
	
		
			
				
					|  |  |  |                 similarStrings.add("-" + shortOption.first); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             STORM_LOG_THROW(false, storm::exceptions::OptionParserException, "Unknown option '" << optionNameWithDashes << "'. " << similarStrings.toDidYouMeanString()); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |         void SettingsManager::setFromExplodedString(std::vector<std::string> const& commandLineArguments) { | 
			
		
	
		
			
				
					|  |  |  |             // In order to assign the parsed arguments to an option, we need to keep track of the "active" option's name.
 | 
			
		
	
		
			
				
					|  |  |  |             bool optionActive = false; | 
			
		
	
	
		
			
				
					|  |  | @ -111,7 +124,9 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |                         // match the long name.
 | 
			
		
	
		
			
				
					|  |  |  |                         std::string optionName = currentArgument.substr(2); | 
			
		
	
		
			
				
					|  |  |  |                         auto optionIterator = this->longNameToOptions.find(optionName); | 
			
		
	
		
			
				
					|  |  |  |                         STORM_LOG_THROW(optionIterator != this->longNameToOptions.end(), storm::exceptions::OptionParserException, "Unknown option '" << optionName << "'."); | 
			
		
	
		
			
				
					|  |  |  |                         if (optionIterator == this->longNameToOptions.end()) { | 
			
		
	
		
			
				
					|  |  |  |                             handleUnknownOption(optionName, false); | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                         activeOptionIsShortName = false; | 
			
		
	
		
			
				
					|  |  |  |                         activeOptionName = optionName; | 
			
		
	
		
			
				
					|  |  |  |                     } else { | 
			
		
	
	
		
			
				
					|  |  | @ -119,7 +134,9 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |                         // match the short name.
 | 
			
		
	
		
			
				
					|  |  |  |                         std::string optionName = currentArgument.substr(1); | 
			
		
	
		
			
				
					|  |  |  |                         auto optionIterator = this->shortNameToOptions.find(optionName); | 
			
		
	
		
			
				
					|  |  |  |                         STORM_LOG_THROW(optionIterator != this->shortNameToOptions.end(), storm::exceptions::OptionParserException, "Unknown option '" << optionName << "'."); | 
			
		
	
		
			
				
					|  |  |  |                         if (optionIterator == this->shortNameToOptions.end()) { | 
			
		
	
		
			
				
					|  |  |  |                             handleUnknownOption(optionName, true); | 
			
		
	
		
			
				
					|  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |                         activeOptionIsShortName = true; | 
			
		
	
		
			
				
					|  |  |  |                         activeOptionName = optionName; | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
	
		
			
				
					|  |  | 
 |