这篇教程C++ sq_gettop函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中sq_gettop函数的典型用法代码示例。如果您正苦于以下问题:C++ sq_gettop函数的具体用法?C++ sq_gettop怎么用?C++ sq_gettop使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了sq_gettop函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: sq_gettopvoid CSquirrel::Call(SQObjectPtr pFunction, CSquirrelArguments * pArguments, CSquirrelArgument * pReturn){ // Get the stack top int iTop = sq_gettop(m_pVM); // Process the parameters if needed int iParams = 1; if(pArguments) { pArguments->push_to_vm(m_pVM); iParams += pArguments->GetArguments()->size(); } // Call the function SQObjectPtr res; if(m_pVM->Call(pFunction, iParams, m_pVM->_top-iParams, res, true)) { // Set the return value if needed if(pReturn) *pReturn = res; } // Restore the stack top sq_settop(m_pVM, iTop);}
开发者ID:B2O,项目名称:IV-Network,代码行数:27,
示例2: invokeImpactEvent /* * invoke impact event */ static SQBool invokeImpactEvent(HSQUIRRELVM v, ContactPoint cp) { SQBool result = false; SQInteger top = sq_gettop(v); sq_pushroottable(v); sq_pushstring(v, "emo", -1); if (SQ_SUCCEEDED(sq_get(v, -2))) { sq_pushstring(v, "_onImpact", -1); if(SQ_SUCCEEDED(sq_get(v, -2))) { sq_pushroottable(v); sq_pushuserpointer(v, cp.fixtureA); sq_pushuserpointer(v, cp.fixtureB); sq_pushuserpointer(v, cp.fixtureA->GetBody()); sq_pushuserpointer(v, cp.fixtureB->GetBody()); pushVec2(v, cp.position); pushVec2(v, cp.normal); sq_pushfloat(v, cp.normalImpulse); sq_pushfloat(v, cp.tangentImpulse); result = SQ_SUCCEEDED(sq_call(v, 9, SQFalse, SQTrue)); } } sq_settop(v,top); return result; }
开发者ID:pandazheng,项目名称:emo-framework,代码行数:28,
示例3: SbuCreateClassBOOL SbuCreateClass(HSQUIRRELVM v,SquirrelClassDecl *cd){ int n = 0; int oldtop = sq_gettop(v); sq_pushroottable(v); sq_pushstring(v,cd->name,-1); if(cd->base) { sq_pushstring(v,cd->base,-1); if(SQ_FAILED(sq_get(v,-3))) { sq_settop(v,oldtop); return FALSE; } } if(SQ_FAILED(sq_newclass(v,cd->base?1:0))) { sq_settop(v,oldtop); return FALSE; } sq_settypetag(v,-1,(SQUserPointer)cd); const ScriptClassMemberDecl *members = cd->members; const ScriptClassMemberDecl *m = NULL; while(members[n].name) { m = &members[n]; sq_pushstring(v,m->name,-1); sq_newclosure(v,m->func,0); sq_setparamscheck(v,m->params,m->typemask); sq_setnativeclosurename(v,-1,m->name); sq_createslot(v,-3); n++; } sq_createslot(v,-3); sq_pop(v,1); return TRUE;}
开发者ID:eriser,项目名称:kdguigl,代码行数:33,
示例4: _stream_writestrSQInteger _stream_writestr(HSQUIRRELVM v){ SETUP_STREAM(v); const SQChar *str,*res; SQInteger trgformat = 'a',len = 0; sq_getstring(v,2,&str); len = sq_getsize(v,2); if(sq_gettop(v)>2) sq_getinteger(v,3,&trgformat); switch(trgformat) { case 'a':#ifdef _UNICODE res = sq_getscratchpad(v,len*3); len = (SQInteger) wcstombs((char *)res, (const wchar_t*)str, len);#else res = str;#endif self->Write((void *)res,len); break; case 'u':#ifdef _UNICODE res = str;#else res = sq_getscratchpad(v,len*sizeof(wchar_t)); len = (SQInteger) mbstowcs((wchar_t*)res, str, len);#endif self->Write((void *)res,len*sizeof(wchar_t)); break; default: return sq_throwerror(v,_SC("wrong encoding")); } return 0;}
开发者ID:brettminnie,项目名称:BDBGame,代码行数:35,
示例5: sc_OnPlayerTextbool sc_OnPlayerText(HSQUIRRELVM v, const short index, const wchar_t *text){ int result = 1; int top = sq_gettop(v); sq_pushroottable(v); sq_pushstring(v, _SC("OnPlayerText"), -1); if(SQ_SUCCEEDED(sq_get(v, -2))) { sq_pushroottable(v); sq_pushinteger(v, index); sq_pushstring(v, text, -1); sq_call(v, 3, 1, 1); sq_getinteger(v, sq_gettop(v), &result); } sq_settop(v, top); return result != 0;}
开发者ID:ThePirateOld,项目名称:four-mp,代码行数:16,
示例6: sc_CallSomeCallbackbool sc_CallSomeCallback(HSQUIRRELVM v, const wchar_t *callback, const int param){ int top = sq_gettop(v); int result = 0; sq_pushroottable(v); sq_pushstring(v, callback, -1); if(SQ_SUCCEEDED(sq_get(v, -2))) { sq_pushroottable(v); sq_pushinteger(v, param); sq_call(v, 2, 1, 1); sq_getinteger(v, sq_gettop(v), &result); } sq_settop(v, top); return result == 1;}
开发者ID:ThePirateOld,项目名称:four-mp,代码行数:16,
示例7: sq_gettopvoid CSquirrel::Call(SQObjectPtr pFunction, CSquirrelArguments * pArguments, CSquirrelArgument * pReturn){ // Lock the squirrel call mutex m_squirrelCallMutex.TryLock(10); // Get the stack top int iTop = sq_gettop(m_pVM); // Process the parameters if needed int iParams = 1; if(pArguments) { pArguments->push_to_vm(m_pVM); iParams += pArguments->size(); } // Call the function SQObjectPtr res; if(m_pVM->Call(pFunction, iParams, m_pVM->_top-iParams, res, true)) { // Set the return value if needed if(pReturn) pReturn->set(res); } // Restore the stack top sq_settop(m_pVM, iTop); // Unlock the squirrel call mutex m_squirrelCallMutex.Unlock();}
开发者ID:JamesConway69,项目名称:ivmultiplayer,代码行数:33,
示例8: ZeroedMemoryAllocatorScriptText::ScriptText(HSQUIRRELVM vm) : ZeroedMemoryAllocator(){ int nparam = sq_gettop(vm) - 1; if (nparam < 1) { throw sq_throwerror(vm, _SC("You need to pass at least a StringID to the constructor")); } /* First resolve the StringID. */ SQInteger sqstring; if (SQ_FAILED(sq_getinteger(vm, 2, &sqstring))) { throw sq_throwerror(vm, _SC("First argument must be a valid StringID")); } this->string = sqstring; /* The rest of the parameters must be arguments. */ for (int i = 0; i < nparam - 1; i++) { /* Push the parameter to the top of the stack. */ sq_push(vm, i + 3); if (SQ_FAILED(this->_SetParam(i, vm))) { this->~ScriptText(); throw sq_throwerror(vm, _SC("Invalid parameter")); } /* Pop the parameter again. */ sq_pop(vm, 1); }}
开发者ID:gfarfl,项目名称:openttd-cargodist,代码行数:29,
示例9: sq_slave_vm_callstatic SQRESULT sq_slave_vm_call(HSQUIRRELVM v){ SQ_FUNC_VARS_NO_TOP(v); GET_sq_slave_vm_INSTANCE(v, 1); SQ_GET_BOOL(v, 2, has_ret_val); SQ_GET_STRING(v, 3, func_name); SQInteger top = sq_gettop(self); SQRESULT result = SQ_ERROR; sq_pushroottable(self); sq_pushstring(self, func_name, func_name_size); if(sq_get(self, -2) == SQ_OK) { switch(sq_gettype(self, -1)) { case OT_CLOSURE: case OT_NATIVECLOSURE: case OT_CLASS: { sq_pushroottable(self); int argc = sq_gettop(v) - 3; if(argc && copy_values_between_vms(self, v, argc, 4) != SQ_OK) { sq_throwerror(v, sq_getlasterror_str(self)); goto cleanup; } if(sq_call(self, argc+1, has_ret_val, SQFalse) != SQ_OK) { sq_throwerror(v, sq_getlasterror_str(self)); goto cleanup; } if(has_ret_val) { if(copy_values_between_vms(v, self, 1, sq_gettop(self)) == SQ_OK) result = 1; } else result = SQ_OK; } } } else { sq_throwerror(v, sq_getlasterror_str(self)); }cleanup: sq_settop(self, top); return result;}
开发者ID:The-Mad-Pirate,项目名称:squilu,代码行数:46,
|