bool CppBoundClass::invoke(NPIdentifier ident, const NPVariant* arguments, size_t argumentCount, NPVariant* result) { MethodList::const_iterator end = m_methods.end(); MethodList::const_iterator method = m_methods.find(ident); Callback* callback; if (method == end) { if (!m_fallbackCallback.get()) { VOID_TO_NPVARIANT(*result); return false; } callback = m_fallbackCallback.get(); } else callback = (*method).second; // Build a CppArgumentList argument vector from the NPVariants coming in. CppArgumentList cppArguments(argumentCount); for (size_t i = 0; i < argumentCount; i++) cppArguments[i].set(arguments[i]); CppVariant cppResult; callback->run(cppArguments, &cppResult); cppResult.copyToNPVariant(result); return true; }
bool CppBoundClass::getProperty(NPIdentifier ident, NPVariant* result) const { PropertyList::const_iterator callback = m_properties.find(ident); if (callback == m_properties.end()) { VOID_TO_NPVARIANT(*result); return false; } CppVariant cppValue; if (!callback->second->getValue(&cppValue)) return false; cppValue.copyToNPVariant(result); return true; }