本文整理汇总了C++中SharedValue::ToObject方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedValue::ToObject方法的具体用法?C++ SharedValue::ToObject怎么用?C++ SharedValue::ToObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedValue
的用法示例。
在下文中一共展示了SharedValue::ToObject方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ToRubyValue
VALUE RubyUtils::ToRubyValue(SharedValue value)
{
if (value->IsNull() || value->IsUndefined())
{
return Qnil;
}
if (value->IsBool())
{
return value->ToBool() ? Qtrue : Qfalse;
}
else if (value->IsNumber())
{
return rb_float_new(value->ToNumber());
}
else if (value->IsString())
{
return rb_str_new2(value->ToString());
}
else if (value->IsObject())
{
AutoPtr<KRubyObject> ro = value->ToObject().cast<KRubyObject>();
if (!ro.isNull())
return ro->ToRuby();
AutoPtr<KRubyHash> rh = value->ToObject().cast<KRubyHash>();
if (!rh.isNull())
return rh->ToRuby();
return RubyUtils::KObjectToRubyValue(value);
}
else if (value->IsMethod())
{
AutoPtr<KRubyMethod> rm = value->ToMethod().cast<KRubyMethod>();
if (!rm.isNull())
return rm->ToRuby();
else
return RubyUtils::KMethodToRubyValue(value);
}
else if (value->IsList())
{
AutoPtr<KRubyList> rl = value->ToList().cast<KRubyList>();
if (!rl.isNull())
return rl->ToRuby();
else
return RubyUtils::KListToRubyValue(value);
}
return Qnil;
}
示例2: BSTRToString
HRESULT STDMETHODCALLTYPE
ScriptEvaluator::evaluate(BSTR mimeType, BSTR sourceCode, int *context)
{
std::string type = BSTRToString(mimeType);
std::string moduleName = GetModuleName(type);
JSContextRef contextRef = reinterpret_cast<JSContextRef>(context);
SharedKObject global = host->GetGlobalObject();
SharedValue moduleValue = global->Get(moduleName.c_str());
if (!moduleValue->IsNull()) {
SharedValue evalValue = moduleValue->ToObject()->Get("evaluate");
if (!evalValue->IsNull() && evalValue->IsMethod()) {
ValueList args;
SharedValue typeValue = Value::NewString(type);
SharedValue sourceCodeValue = Value::NewString(BSTRToString(sourceCode));
JSObjectRef globalObjectRef = JSContextGetGlobalObject(contextRef);
SharedKObject contextObject = new KKJSObject(contextRef, globalObjectRef);
SharedValue contextValue = Value::NewObject(contextObject);
args.push_back(typeValue);
args.push_back(sourceCodeValue);
args.push_back(contextValue);
evalValue->ToMethod()->Call(args);
}
}
return S_OK;
}
示例3: GetNS
SharedValue KObject::GetNS(const char *name)
{
std::string s(name);
std::string::size_type last = 0;
std::string::size_type pos = s.find_first_of(".");
SharedValue current;
KObject* scope = this;
while (pos != std::string::npos)
{
std::string token = s.substr(last,pos-last);
current = scope->Get(token.c_str());
if (current->IsObject())
{
scope = current->ToObject().get();
}
else
{
return Value::Undefined;
}
last = pos + 1;
pos = s.find_first_of(".", last);
}
if (pos!=s.length())
{
std::string token = s.substr(last);
current = scope->Get(token.c_str());
}
return current;
}
示例4: GetModuleName
HRESULT STDMETHODCALLTYPE
ScriptEvaluator::matchesMimeType(BSTR mimeType, BOOL *result)
{
std::string moduleName = GetModuleName(BSTRToString(mimeType));
SharedKObject global = host->GetGlobalObject();
SharedValue moduleValue = global->Get(moduleName.c_str());
*result = FALSE;
if (!moduleValue->IsNull() && moduleValue->IsObject()) {
if (!moduleValue->ToObject()->Get("evaluate")->IsNull()
&& !moduleValue->ToObject()->Get("evaluate")->IsUndefined()
&& moduleValue->ToObject()->Get("evaluate")->IsMethod()) {
*result = TRUE;
}
}
return S_OK;
}
示例5: GetObject
SharedKObject KObject::GetObject(const char* name, SharedKObject defaultValue)
{
SharedValue prop = this->Get(name);
if (prop->IsObject())
{
return prop->ToObject();
}
else
{
return defaultValue;
}
}
示例6: SendFile
void HTTPClientBinding::SendFile(const ValueList& args, SharedValue result)
{
if (this->Get("connected")->ToBool())
{
throw ValueException::FromString("already connected");
}
if (args.size()==1)
{
// can be a string of data or a file
SharedValue v = args.at(0);
if (v->IsObject())
{
// probably a file
SharedKObject obj = v->ToObject();
if (obj->Get("isFile")->IsMethod())
{
std::string file = obj->Get("toString")->ToMethod()->Call()->ToString();
this->filestream = new Poco::FileInputStream(file);
Poco::Path p(file);
this->filename = p.getFileName();
}
else
{
this->datastream = obj->Get("toString")->ToMethod()->Call()->ToString();
}
}
else if (v->IsString())
{
this->filestream = new Poco::FileInputStream(v->ToString());
}
else
{
throw ValueException::FromString("unknown data type");
}
}
this->thread = new Poco::Thread();
this->thread->start(&HTTPClientBinding::Run,(void*)this);
if (!this->async)
{
PRINTD("Waiting on HTTP Client thread to finish");
this->thread->join();
}
}
示例7: Send
void HTTPClientBinding::Send(const ValueList& args, SharedValue result)
{
if (this->Get("connected")->ToBool())
{
throw ValueException::FromString("already connected");
}
if (args.size()==1)
{
// can be a string of data or a file
SharedValue v = args.at(0);
if (v->IsObject())
{
// probably a file
SharedKObject obj = v->ToObject();
this->datastream = obj->Get("toString")->ToMethod()->Call()->ToString();
}
else if (v->IsString())
{
this->datastream = v->ToString();
}
else if (v->IsNull() || v->IsUndefined())
{
this->datastream = "";
}
else
{
throw ValueException::FromString("unknown data type");
}
}
this->thread = new Poco::Thread();
this->thread->start(&HTTPClientBinding::Run,(void*)this);
if (!this->async)
{
PRINTD("Waiting on HTTP Client thread to finish (sync)");
Poco::Stopwatch sw;
sw.start();
while (!this->shutdown && sw.elapsedSeconds() * 1000 < this->timeout)
{
this->thread->tryJoin(100);
}
PRINTD("HTTP Client thread finished (sync)");
}
}