我想阅读自定义插件的<param>
值
我在互联网上找不到答案,我发现的是:
https://github.com/firebreath/FireBreath/blob/master/src/NpapiCore/NpapiPlugin.cpp#L76
我看到params存储在pluginMain->setParams(paramList);
您能指出我以后如何访问此paramList吗?或pluginMain
有pluginMain->getParams()
吗?我找不到参考文献
我也找不到setParams()
的来源。
问题是,如何从PluginWindowXXX
或FB::NpapiPluginXXX
获取参数?
我将m_npHost
导出到PluginWindowXXX
,使用gdb在其中设置断点但仍未成功。
我能想到的只有:
(gdb) p ((FB::Npapi::NpapiBrowserHost)this->m_npHost)->GetValue
$17 = {NPError (const FB::Npapi::NpapiBrowserHost * const, NPNVariable, void *)} 0x7fe435adeff8 <FB::Npapi::NpapiBrowserHost::GetValue(NPNVariable, void*) const>
显然我做错了但是我被困了
我从NpapiPluginX11.cpp
pluginWin->setHost(m_npHost);
答案 0 :(得分:1)
MyPluginAPI::MyPluginAPI(const MyPluginPtr& plugin, const FB::BrowserHostPtr& host) : m_plugin(plugin), m_host(host)
{
string settings; //<param name="settings" value="{'foo':'bar'}">
settings = plugin->getParam("settings");
}
答案 1 :(得分:0)
在PluginCore派生类中,您可以使用getParam
方法或getParamVariant
方法。
boost::optional<std::string> PluginCore::getParam(const std::string& key) {
boost::optional<std::string> rval;
FB::VariantMap::const_iterator fnd = m_params.find(key.c_str());
if (fnd != m_params.end())
rval.reset(fnd->second.convert_cast<std::string>());
return rval;
}
FB::variant FB::PluginCore::getParamVariant( const std::string& key )
{
FB::VariantMap::const_iterator fnd = m_params.find(key.c_str());
if (fnd != m_params.end())
return fnd->second;
return FB::variant();
}
因此,如果它确实是一个字符串(它几乎就是,除非它以on开头,在这种情况下它可能已被转换为引用的函数),你可以使用:
boost::optional<std::string> mystr = getParam("mystr");
if (mystr) {
call_fn_with_string(*mystr);
}
或者,您可以将其作为变体并将其转换为:
FB::variant mystrVal = getParamVariant("mystr");
try {
call_fn_with_string(mystrVal.convert_cast<std::string>());
} catch (FB::bad_variant_cast &err) {
// What to do if the cast to string fails
}