本文整理汇总了C++中RootObject类的典型用法代码示例。如果您正苦于以下问题:C++ RootObject类的具体用法?C++ RootObject怎么用?C++ RootObject使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了RootObject类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _NPN_Evaluate
bool _NPN_Evaluate(NPP, NPObject* o, NPString* s, NPVariant* variant)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
JSLock lock(SilenceAssertionsOnly);
String scriptString = convertNPStringToUTF16(s);
ProtectedPtr<JSGlobalObject> globalObject = rootObject->globalObject();
globalObject->globalData()->timeoutChecker.start();
Completion completion = JSC::evaluate(globalObject->globalExec(), globalObject->globalScopeChain(), makeSource(scriptString), JSC::JSValue());
globalObject->globalData()->timeoutChecker.stop();
ComplType type = completion.complType();
JSValue result;
if (type == Normal) {
result = completion.value();
if (!result)
result = jsUndefined();
} else
result = jsUndefined();
convertValueToNPVariant(exec, result, variant);
exec->clearException();
return true;
}
VOID_TO_NPVARIANT(*variant);
return false;
}
示例2: _NPN_HasProperty
bool _NPN_HasProperty(NPP, NPObject* o, NPIdentifier propertyName)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
PrivateIdentifier* i = static_cast<PrivateIdentifier*>(propertyName);
JSLock lock(false);
if (i->isString) {
bool result = obj->imp->hasProperty(exec, identifierFromNPIdentifier(i->value.string));
exec->clearException();
return result;
}
bool result = obj->imp->hasProperty(exec, i->value.number);
exec->clearException();
return result;
}
if (o->_class->hasProperty)
return o->_class->hasProperty(o, propertyName);
return false;
}
示例3: getJNIEnv
jvalue JavaField::dispatchValueFromInstance(ExecState* exec, const JavaInstance* instance, const char* name, const char* sig, JNIType returnType) const
{
jobject jinstance = instance->javaInstance();
jobject fieldJInstance = m_field->m_instance;
JNIEnv* env = getJNIEnv();
jvalue result;
memset(&result, 0, sizeof(jvalue));
jclass cls = env->GetObjectClass(fieldJInstance);
if (cls) {
jmethodID mid = env->GetMethodID(cls, name, sig);
if (mid) {
RootObject* rootObject = instance->rootObject();
if (rootObject && rootObject->nativeHandle()) {
JSValue exceptionDescription;
jvalue args[1];
args[0].l = jinstance;
dispatchJNICall(exec, rootObject->nativeHandle(), fieldJInstance, false, returnType, mid, args, result, 0, exceptionDescription);
if (exceptionDescription)
throwError(exec, GeneralError, exceptionDescription.toString(exec));
}
}
}
return result;
}
示例4: _NPN_SetProperty
bool _NPN_SetProperty(NPP, NPObject* o, NPIdentifier propertyName, const NPVariant* variant)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
JSLockHolder lock(exec);
IdentifierRep* i = static_cast<IdentifierRep*>(propertyName);
if (i->isString()) {
PutPropertySlot slot(obj->imp);
obj->imp->methodTable()->put(obj->imp, exec, identifierFromNPIdentifier(exec, i->string()), convertNPVariantToValue(exec, variant, rootObject), slot);
} else
obj->imp->methodTable()->putByIndex(obj->imp, exec, i->number(), convertNPVariantToValue(exec, variant, rootObject), false);
exec->clearException();
return true;
}
if (o->_class->setProperty)
return o->_class->setProperty(o, propertyName, variant);
return false;
}
示例5: _NPN_RemoveProperty
bool _NPN_RemoveProperty(NPP, NPObject* o, NPIdentifier propertyName)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
IdentifierRep* i = static_cast<IdentifierRep*>(propertyName);
if (i->isString()) {
if (!obj->imp->hasProperty(exec, identifierFromNPIdentifier(exec, i->string()))) {
exec->clearException();
return false;
}
} else {
if (!obj->imp->hasProperty(exec, i->number())) {
exec->clearException();
return false;
}
}
JSLockHolder lock(exec);
if (i->isString())
obj->imp->methodTable()->deleteProperty(obj->imp, exec, identifierFromNPIdentifier(exec, i->string()));
else
obj->imp->methodTable()->deletePropertyByIndex(obj->imp, exec, i->number());
exec->clearException();
return true;
}
return false;
}
示例6: _NPN_Evaluate
bool _NPN_Evaluate(NPP instance, NPObject* o, NPString* s, NPVariant* variant)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
// There is a crash in Flash when evaluating a script that destroys the
// PluginView, so we destroy it asynchronously.
PluginView::keepAlive(instance);
ExecState* exec = rootObject->globalObject()->globalExec();
JSLockHolder lock(exec);
String scriptString = convertNPStringToUTF16(s);
JSValue returnValue = JSC::evaluate(rootObject->globalObject()->globalExec(), makeSource(scriptString), JSC::JSValue());
convertValueToNPVariant(exec, returnValue, variant);
exec->clearException();
return true;
}
VOID_TO_NPVARIANT(*variant);
return false;
}
示例7: _NPN_GetProperty
bool _NPN_GetProperty(NPP, NPObject* o, NPIdentifier propertyName, NPVariant* variant)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
PrivateIdentifier* i = static_cast<PrivateIdentifier*>(propertyName);
JSLock lock(false);
JSValue* result;
if (i->isString)
result = obj->imp->get(exec, identifierFromNPIdentifier(i->value.string));
else
result = obj->imp->get(exec, i->value.number);
convertValueToNPVariant(exec, result, variant);
exec->clearException();
return true;
}
if (o->_class->hasProperty && o->_class->getProperty) {
if (o->_class->hasProperty(o, propertyName))
return o->_class->getProperty(o, propertyName, variant);
return false;
}
VOID_TO_NPVARIANT(*variant);
return false;
}
示例8: _NPN_RemoveProperty
bool _NPN_RemoveProperty(NPP, NPObject* o, NPIdentifier propertyName)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = (JavaScriptObject*)o;
if (!_isSafeScript(obj))
return false;
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->interpreter()->globalExec();
PrivateIdentifier* i = (PrivateIdentifier*)propertyName;
if (i->isString) {
if (!obj->imp->hasProperty(exec, identifierFromNPIdentifier(i->value.string)))
return false;
} else {
if (!obj->imp->hasProperty(exec, i->value.number))
return false;
}
JSLock lock;
if (i->isString)
obj->imp->deleteProperty(exec, identifierFromNPIdentifier(i->value.string));
else
obj->imp->deleteProperty(exec, i->value.number);
return true;
}
return false;
}
示例9: _NPN_SetProperty
bool _NPN_SetProperty(NPP, NPObject* o, NPIdentifier propertyName, const NPVariant* variant)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = (JavaScriptObject*)o;
if (!_isSafeScript(obj))
return false;
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->interpreter()->globalExec();
JSLock lock;
PrivateIdentifier* i = (PrivateIdentifier*)propertyName;
if (i->isString)
obj->imp->put(exec, identifierFromNPIdentifier(i->value.string), convertNPVariantToValue(exec, variant));
else
obj->imp->put(exec, i->value.number, convertNPVariantToValue(exec, variant));
return true;
}
if (o->_class->setProperty)
return o->_class->setProperty(o, propertyName, variant);
return false;
}
示例10: _NPN_HasMethod
bool _NPN_HasMethod(NPP, NPObject* o, NPIdentifier methodName)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
PrivateIdentifier* i = static_cast<PrivateIdentifier*>(methodName);
if (!i->isString)
return false;
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
JSLock lock(false);
JSValue* func = obj->imp->get(exec, identifierFromNPIdentifier(i->value.string));
exec->clearException();
return !func->isUndefined();
}
if (o->_class->hasMethod)
return o->_class->hasMethod(o, methodName);
return false;
}
示例11: _NPN_Enumerate
bool _NPN_Enumerate(NPP, NPObject* o, NPIdentifier** identifier, uint32_t* count)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
JSLock lock(false);
PropertyNameArray propertyNames(exec);
obj->imp->getPropertyNames(exec, propertyNames);
unsigned size = static_cast<unsigned>(propertyNames.size());
// FIXME: This should really call NPN_MemAlloc but that's in WebKit
NPIdentifier* identifiers = static_cast<NPIdentifier*>(malloc(sizeof(NPIdentifier) * size));
for (unsigned i = 0; i < size; ++i)
identifiers[i] = _NPN_GetStringIdentifier(propertyNames[i].ustring().UTF8String().c_str());
*identifier = identifiers;
*count = size;
exec->clearException();
return true;
}
if (NP_CLASS_STRUCT_VERSION_HAS_ENUM(o->_class) && o->_class->enumerate)
return o->_class->enumerate(o, identifier, count);
return false;
}
示例12: _NPN_HasMethod
bool _NPN_HasMethod(NPP, NPObject* o, NPIdentifier methodName)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = (JavaScriptObject*)o;
if (!_isSafeScript(obj))
return false;
PrivateIdentifier* i = (PrivateIdentifier*)methodName;
if (!i->isString)
return false;
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->interpreter()->globalExec();
JSLock lock;
JSValue* func = obj->imp->get(exec, identifierFromNPIdentifier(i->value.string));
return !func->isUndefined();
}
if (o->_class->hasMethod)
return o->_class->hasMethod(o, methodName);
return false;
}
示例13: _NPN_SetProperty
bool _NPN_SetProperty(NPP, NPObject* o, NPIdentifier propertyName, const NPVariant* variant)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = reinterpret_cast<JavaScriptObject*>(o);
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->globalObject()->globalExec();
JSLock lock(false);
PrivateIdentifier* i = static_cast<PrivateIdentifier*>(propertyName);
if (i->isString) {
PutPropertySlot slot;
obj->imp->put(exec, identifierFromNPIdentifier(i->value.string), convertNPVariantToValue(exec, variant, rootObject), slot);
} else
obj->imp->put(exec, i->value.number, convertNPVariantToValue(exec, variant, rootObject));
exec->clearException();
return true;
}
if (o->_class->setProperty)
return o->_class->setProperty(o, propertyName, variant);
return false;
}
示例14: _NPN_Invoke
bool _NPN_Invoke(NPP npp, NPObject* o, NPIdentifier methodName, const NPVariant* args, uint32_t argCount, NPVariant* result)
{
if (o->_class == NPScriptObjectClass) {
JavaScriptObject* obj = (JavaScriptObject*)o;
if (!_isSafeScript(obj))
return false;
PrivateIdentifier* i = (PrivateIdentifier*)methodName;
if (!i->isString)
return false;
// Special case the "eval" method.
if (methodName == _NPN_GetStringIdentifier("eval")) {
if (argCount != 1)
return false;
if (args[0].type != NPVariantType_String)
return false;
return _NPN_Evaluate(npp, o, (NPString *)&args[0].value.stringValue, result);
}
// Lookup the function object.
RootObject* rootObject = obj->rootObject;
if (!rootObject || !rootObject->isValid())
return false;
ExecState* exec = rootObject->interpreter()->globalExec();
JSLock lock;
JSValue* func = obj->imp->get(exec, identifierFromNPIdentifier(i->value.string));
if (func->isNull()) {
NULL_TO_NPVARIANT(*result);
return false;
}
if (func->isUndefined()) {
VOID_TO_NPVARIANT(*result);
return false;
}
// Call the function object.
JSObject *funcImp = static_cast<JSObject*>(func);
JSObject *thisObj = const_cast<JSObject*>(obj->imp);
List argList = listFromVariantArgs(exec, args, argCount, rootObject);
rootObject->interpreter()->startTimeoutCheck();
JSValue *resultV = funcImp->call (exec, thisObj, argList);
rootObject->interpreter()->stopTimeoutCheck();
// Convert and return the result of the function call.
convertValueToNPVariant(exec, resultV, result);
return true;
}
if (o->_class->invoke)
return o->_class->invoke(o, methodName, args, argCount, result);
VOID_TO_NPVARIANT(*result);
return true;
}
示例15: expressionInlineCost
int DeclarationExp::inlineCost3(InlineCostState *ics)
{ int cost = 0;
VarDeclaration *vd;
//printf("DeclarationExp::inlineCost3()\n");
vd = declaration->isVarDeclaration();
if (vd)
{
TupleDeclaration *td = vd->toAlias()->isTupleDeclaration();
if (td)
{
#if 1
return COST_MAX; // finish DeclarationExp::doInline
#else
for (size_t i = 0; i < td->objects->dim; i++)
{ RootObject *o = (*td->objects)[i];
if (o->dyncast() != DYNCAST_EXPRESSION)
return COST_MAX;
Expression *eo = (Expression *)o;
if (eo->op != TOKdsymbol)
return COST_MAX;
}
return td->objects->dim;
#endif
}
if (!ics->hdrscan && vd->isDataseg())
return COST_MAX;
cost += 1;
if (vd->edtor) // if destructor required
return COST_MAX; // needs work to make this work
// Scan initializer (vd->init)
if (vd->init)
{
ExpInitializer *ie = vd->init->isExpInitializer();
if (ie)
{
cost += expressionInlineCost(ie->exp, ics);
}
}
}
// These can contain functions, which when copied, get output twice.
if (declaration->isStructDeclaration() ||
declaration->isClassDeclaration() ||
declaration->isFuncDeclaration() ||
declaration->isTypedefDeclaration() ||
declaration->isAttribDeclaration() ||
declaration->isTemplateMixin())
return COST_MAX;
//printf("DeclarationExp::inlineCost3('%s')\n", toChars());
return cost;
}