本文整理汇总了C++中shim函数的典型用法代码示例。如果您正苦于以下问题:C++ shim函数的具体用法?C++ shim怎么用?C++ shim使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了shim函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: shim
void DefaultGCActivityCallbackPlatformData::trigger(CFRunLoopTimerRef timer, void *info)
{
Heap* heap = static_cast<Heap*>(info);
APIEntryShim shim(heap->globalData());
heap->collectAllGarbage();
CFRunLoopTimerSetNextFireDate(timer, CFAbsoluteTimeGetCurrent() + decade);
}
开发者ID:0omega,项目名称:platform_external_webkit,代码行数:7,代码来源:GCActivityCallbackCF.cpp
示例2: foo
/*!
Returns true if the function was called as a constructor
(e.g. \c{"new foo()"}); otherwise returns false.
When a function is called as constructor, the thisObject()
contains the newly constructed object to be initialized.
\note This function is only guaranteed to work for a context
corresponding to native functions.
*/
bool QScriptContext::isCalledAsConstructor() const
{
JSC::CallFrame *frame = const_cast<JSC::ExecState*>(QScriptEnginePrivate::frameForContext(this));
QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
//For native functions, look up flags.
uint flags = QScriptEnginePrivate::contextFlags(frame);
if (flags & QScriptEnginePrivate::NativeContext)
return flags & QScriptEnginePrivate::CalledAsConstructorContext;
//Not a native function, try to look up in the bytecode if we where called from op_construct
JSC::Instruction* returnPC = frame->returnPC();
if (!returnPC)
return false;
JSC::CallFrame *callerFrame = QScriptEnginePrivate::frameForContext(parentContext());
if (!callerFrame)
return false;
if (returnPC[-JSC::op_construct_length].u.opcode == frame->interpreter()->getOpcode(JSC::op_construct)) {
//We are maybe called from the op_construct opcode which has 6 opperands.
//But we need to check we are not called from op_call with 4 opperands
//we make sure that the returnPC[-1] (thisRegister) is smaller than the returnPC[-3] (registerOffset)
//as if it was an op_call, the returnPC[-1] would be the registerOffset, bigger than returnPC[-3] (funcRegister)
return returnPC[-1].u.operand < returnPC[-3].u.operand;
}
return false;
}
开发者ID:stephaneAG,项目名称:PengPod700,代码行数:40,代码来源:qscriptcontext.cpp
示例3: throwValue
/*!
\overload
Throws an error with the given \a text.
Returns the created error object.
\sa throwValue(), state()
*/
QScriptValue QScriptContext::throwError(const QString &text)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::JSObject *result = JSC::throwError(frame, JSC::GeneralError, text);
return QScript::scriptEngineFromExec(frame)->scriptValueFromJSCValue(result);
}
开发者ID:stephaneAG,项目名称:PengPod700,代码行数:15,代码来源:qscriptcontext.cpp
示例4: activationObject
/*!
\internal
\since 4.5
Adds the given \a object to the front of this context's scope chain.
If \a object is not an object, this function does nothing.
*/
void QScriptContext::pushScope(const QScriptValue &object)
{
activationObject(); //ensure the creation of the normal scope for native context
if (!object.isObject())
return;
else if (object.engine() != engine()) {
qWarning("QScriptContext::pushScope() failed: "
"cannot push an object created in "
"a different engine");
return;
}
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
QScript::APIShim shim(engine);
JSC::JSObject *jscObject = JSC::asObject(engine->scriptValueToJSCValue(object));
if (jscObject == engine->originalGlobalObjectProxy)
jscObject = engine->originalGlobalObject();
JSC::ScopeChainNode *scope = frame->scopeChain();
Q_ASSERT(scope != 0);
if (!scope->object) {
// pushing to an "empty" chain
if (!jscObject->isGlobalObject()) {
qWarning("QScriptContext::pushScope() failed: initial object in scope chain has to be the Global Object");
return;
}
scope->object = jscObject;
}
else
frame->setScopeChain(scope->push(jscObject));
}
开发者ID:stephaneAG,项目名称:PengPod700,代码行数:38,代码来源:qscriptcontext.cpp
示例5: shim
/*!
Sets the `this' object associated with this QScriptContext to be
\a thisObject.
If \a thisObject is not an object, this function does nothing.
*/
void QScriptContext::setThisObject(const QScriptValue &thisObject)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
if (!thisObject.isObject())
return;
if (thisObject.engine() != engine()) {
qWarning("QScriptContext::setThisObject() failed: "
"cannot set an object created in "
"a different engine");
return;
}
if (frame == frame->lexicalGlobalObject()->globalExec()) {
engine()->setGlobalObject(thisObject);
return;
}
JSC::JSValue jscThisObject = QScript::scriptEngineFromExec(frame)->scriptValueToJSCValue(thisObject);
JSC::CodeBlock *cb = frame->codeBlock();
if (cb != 0) {
frame[cb->thisRegister()] = jscThisObject;
} else {
JSC::Register* thisRegister = QScriptEnginePrivate::thisRegisterForFrame(frame);
thisRegister[0] = jscThisObject;
}
}
开发者ID:stephaneAG,项目名称:PengPod700,代码行数:31,代码来源:qscriptcontext.cpp
示例6: shim
void Dawg::iterate_words(const UNICHARSET &unicharset,
TessCallback1<const char *> *cb) const {
std::unique_ptr<TessCallback1<const WERD_CHOICE *>> shim(
NewPermanentTessCallback(CallWithUTF8, cb));
WERD_CHOICE word(&unicharset);
iterate_words_rec(word, 0, shim.get());
}
开发者ID:Shreeshrii,项目名称:tesseract,代码行数:7,代码来源:dawg.cpp
示例7: shim
QScriptProgramPrivate::~QScriptProgramPrivate()
{
if (engine) {
QScript::APIShim shim(engine);
_executable.clear();
}
}
开发者ID:Akheon23,项目名称:chromecast-mirrored-source.vendor,代码行数:7,代码来源:qscriptprogram.cpp
示例8: if
void HeapTimer::timerDidFire(CFRunLoopTimerRef timer, void* context)
{
JSLock* apiLock = static_cast<JSLock*>(context);
apiLock->lock();
VM* vm = apiLock->vm();
// The VM has been destroyed, so we should just give up.
if (!vm) {
apiLock->unlock();
return;
}
HeapTimer* heapTimer = 0;
if (vm->heap.activityCallback()->m_timer.get() == timer)
heapTimer = vm->heap.activityCallback();
else if (vm->heap.sweeper()->m_timer.get() == timer)
heapTimer = vm->heap.sweeper();
else
RELEASE_ASSERT_NOT_REACHED();
{
APIEntryShim shim(vm);
heapTimer->doWork();
}
apiLock->unlock();
}
开发者ID:kamend,项目名称:javascriptcore-api-test,代码行数:27,代码来源:HeapTimer.cpp
示例9: thrown
/*!
Throws an exception with the given \a value.
Returns the value thrown (the same as the argument).
\sa throwError(), state()
*/
QScriptValue QScriptContext::throwValue(const QScriptValue &value)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::JSValue jscValue = QScript::scriptEngineFromExec(frame)->scriptValueToJSCValue(value);
frame->setException(jscValue);
return value;
}
开发者ID:stephaneAG,项目名称:PengPod700,代码行数:14,代码来源:qscriptcontext.cpp
示例10: shim
QScriptProgramPrivate::~QScriptProgramPrivate()
{
if (engine) {
QScript::APIShim shim(engine);
_executable.clear();
engine->unregisterScriptProgram(this);
}
}
开发者ID:sicily,项目名称:qt4.8.4,代码行数:8,代码来源:qscriptprogram.cpp
示例11: next
/*!
Returns the flags of the last property that was jumped over using
next() or previous().
\sa value()
*/
QScriptValue::PropertyFlags QScriptValueIterator::flags() const
{
Q_D(const QScriptValueIterator);
if (!d || !d->initialized || !d->engine())
return 0;
QScript::APIShim shim(d->engine());
return d->object()->propertyFlags(*d->current);
}
开发者ID:SchleunigerAG,项目名称:WinEC7_Qt5.3.1_Fixes,代码行数:14,代码来源:qscriptvalueiterator.cpp
示例12: shim
QScriptDeclarativeClass::PersistentIdentifier::~PersistentIdentifier()
{
if (engine) {
QScript::APIShim shim(engine);
((JSC::Identifier &)d).JSC::Identifier::~Identifier();
} else {
((JSC::Identifier &)d).JSC::Identifier::~Identifier();
}
}
开发者ID:fluxer,项目名称:katie,代码行数:9,代码来源:qscriptdeclarativeclass.cpp
示例13: engine
~QScriptValueIteratorPrivate()
{
if (!initialized)
return;
QScriptEnginePrivate *eng_p = engine();
if (!eng_p)
return;
QScript::APIShim shim(eng_p);
propertyNames.clear(); //destroying the identifiers need to be done under the APIShim guard
}
开发者ID:SchleunigerAG,项目名称:WinEC7_Qt5.3.1_Fixes,代码行数:10,代码来源:qscriptvalueiterator.cpp
示例14: shim
bool HeapTimer::timerEvent(void* info)
{
HeapTimer* agent = static_cast<HeapTimer*>(info);
APIEntryShim shim(agent->m_vm);
agent->doWork();
agent->m_timer = 0;
return ECORE_CALLBACK_CANCEL;
}
开发者ID:604339917,项目名称:JavaScriptCore-iOS-1,代码行数:10,代码来源:HeapTimer.cpp
示例15: lock
void HeapTimer::timerEvent(QTimerEvent*)
{
QMutexLocker lock(&m_mutex);
if (m_newThread) {
// We need to wait with processing until we are on the right thread.
return;
}
APIEntryShim shim(m_vm);
doWork();
}
开发者ID:kamend,项目名称:javascriptcore-api-test,代码行数:11,代码来源:HeapTimer.cpp
示例16: Q_ASSERT
QScriptDeclarativeClass::Value
QScriptDeclarativeClass::newObjectValue(QScriptEngine *engine,QScriptDeclarativeClass *scriptClass, Object *object)
{
Q_ASSERT(engine);
Q_ASSERT(scriptClass);
QScriptEnginePrivate *p = QScriptEnginePrivate::cs_getPrivate(engine);
QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
QScriptObject *result = new (exec) QScriptObject(p->scriptObjectStructure);
result->setDelegate(new QScript::DeclarativeObjectDelegate(scriptClass, object));
return jscToValue(JSC::JSValue(result));
}
开发者ID:wpbest,项目名称:copperspice,代码行数:14,代码来源:qscriptdeclarativeclass.cpp
示例17: if
/*!
Sets the activation object of this QScriptContext to be the given \a
activation.
If \a activation is not an object, this function does nothing.
\note For a context corresponding to a JavaScript function, this is only
guaranteed to work if there was an QScriptEngineAgent active on the
engine while the function was evaluated.
*/
void QScriptContext::setActivationObject(const QScriptValue &activation)
{
if (!activation.isObject())
return;
else if (activation.engine() != engine()) {
qWarning("QScriptContext::setActivationObject() failed: "
"cannot set an object created in "
"a different engine");
return;
}
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
QScript::APIShim shim(engine);
JSC::JSObject *object = JSC::asObject(engine->scriptValueToJSCValue(activation));
if (object == engine->originalGlobalObjectProxy)
object = engine->originalGlobalObject();
uint flags = QScriptEnginePrivate::contextFlags(frame);
if ((flags & QScriptEnginePrivate::NativeContext) && !(flags & QScriptEnginePrivate::HasScopeContext)) {
//For native functions, we create a scope node
JSC::JSObject *scope = object;
if (!scope->isVariableObject()) {
// Create a QScriptActivationObject that acts as a proxy
scope = new (frame) QScript::QScriptActivationObject(frame, scope);
}
frame->setScopeChain(frame->scopeChain()->copy()->push(scope));
QScriptEnginePrivate::setContextFlags(frame, flags | QScriptEnginePrivate::HasScopeContext);
return;
}
// else replace the first activation object in the scope chain
JSC::ScopeChainNode *node = frame->scopeChain();
while (node != 0) {
if (node->object && node->object->isVariableObject()) {
if (!object->isVariableObject()) {
if (node->object->inherits(&QScript::QScriptActivationObject::info)) {
static_cast<QScript::QScriptActivationObject*>(node->object)->setDelegate(object);
} else {
// Create a QScriptActivationObject that acts as a proxy
node->object = new (frame) QScript::QScriptActivationObject(frame, object);
}
} else {
node->object = object;
}
break;
}
node = node->next;
}
}
开发者ID:stephaneAG,项目名称:PengPod700,代码行数:59,代码来源:qscriptcontext.cpp
示例18: Q_ASSERT
QScriptValue QScriptDeclarativeClass::newObject(QScriptEngine *engine,
QScriptDeclarativeClass *scriptClass,
Object *object)
{
Q_ASSERT(engine);
Q_ASSERT(scriptClass);
QScriptEnginePrivate *p = static_cast<QScriptEnginePrivate *>(QObjectPrivate::get(engine));
QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
QScriptObject *result = new (exec) QScriptObject(p->scriptObjectStructure);
result->setDelegate(new QScript::DeclarativeObjectDelegate(scriptClass, object));
return p->scriptValueFromJSCValue(result);
}
开发者ID:fluxer,项目名称:katie,代码行数:15,代码来源:qscriptdeclarativeclass.cpp
示例19: shim
QScriptDeclarativeClass::PersistentIdentifier
QScriptDeclarativeClass::createPersistentIdentifier(const QString &str)
{
QScriptEnginePrivate *p = QScriptEnginePrivate::cs_getPrivate(d_ptr->engine);
QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
PersistentIdentifier rv(p);
new (&rv.d) JSC::Identifier(exec, (UChar *)str.constData(), str.size());
rv.identifier = (void *)((JSC::Identifier &)rv.d).ustring().rep();
return rv;
}
开发者ID:wpbest,项目名称:copperspice,代码行数:15,代码来源:qscriptdeclarativeclass.cpp
注:本文中的shim函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论