void QSparqlConnectionOptionsPrivate::setOption(const QString& name, const QVariant& value) { if (value.isValid()) { QVariant convertedValue; if (validateOptionValue(name, value, convertedValue)) map.insert(name, convertedValue); } else { map.remove(name); } }
void loadOptions( OptionMap& outOptions, void* av_class, int req_flags ) { if( ! av_class ) return; std::multimap<std::string, std::string> optionUnitToParentName; std::vector<Option> childOptions; const AVOption* avOption = NULL; // iterate on options #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT( 51, 12, 0 ) while( ( avOption = av_next_option( av_class, avOption ) ) ) #else while( ( avOption = av_opt_next( av_class, avOption ) ) ) #endif { if( ! avOption || ! avOption->name || ( avOption->flags & req_flags ) != req_flags ) { continue; } Option option( *const_cast<AVOption*>( avOption ), av_class ); if( option.getType() == eOptionBaseTypeChild ) { childOptions.push_back( option ); } else { outOptions.insert( std::make_pair( option.getName(), option ) ); optionUnitToParentName.insert( std::make_pair( option.getUnit(), option.getName() ) ); } } // iterate on child options for( std::vector<Option>::iterator itOption = childOptions.begin(); itOption != childOptions.end(); ++itOption ) { bool parentFound = false; for( std::multimap<std::string, std::string>::iterator itUnit = optionUnitToParentName.begin(); itUnit != optionUnitToParentName.end(); ++itUnit ) { if( itUnit->first == itOption->getUnit() ) { std::string nameParentOption = itUnit->second; Option& parentOption = outOptions.at( nameParentOption ); parentOption.appendChild( *itOption ); // child of a Choice if( parentOption.getType() == eOptionBaseTypeChoice ) { if( itOption->getDefaultInt() == parentOption.getDefaultInt() ) parentOption.setDefaultChildIndex( parentOption.getChilds().size() - 1 ); } parentFound = true; break; } } if( ! parentFound ) { LOG_WARN( "Can't find a choice option for " << itOption->getName() ) } } }