ÕâÆª½Ì³ÌC++ sq_throwerrorº¯Êý´úÂëʾÀýдµÃºÜʵÓã¬Ï£ÍûÄܰﵽÄú¡£
±¾ÎÄÕûÀí»ã×ÜÁËC++ÖÐsq_throwerrorº¯ÊýµÄµäÐÍÓ÷¨´úÂëʾÀý¡£Èç¹ûÄúÕý¿àÓÚÒÔÏÂÎÊÌ⣺C++ sq_throwerrorº¯ÊýµÄ¾ßÌåÓ÷¨£¿C++ sq_throwerrorÔõôÓã¿C++ sq_throwerrorʹÓõÄÀý×Ó£¿ÄÇô¹§Ï²Äú, ÕâÀᆱѡµÄº¯Êý´úÂëʾÀý»òÐí¿ÉÒÔΪÄúÌṩ°ïÖú¡£ ÔÚÏÂÎÄÖÐÒ»¹²Õ¹Ê¾ÁËsq_throwerrorº¯ÊýµÄ30¸ö´úÂëʾÀý£¬ÕâЩÀý×ÓĬÈϸù¾ÝÊÜ»¶Ó³Ì¶ÈÅÅÐò¡£Äú¿ÉÒÔΪϲ»¶»òÕ߸оõÓÐÓõĴúÂëµãÔÞ£¬ÄúµÄÆÀ¼Û½«ÓÐÖúÓÚÎÒÃǵÄÏµÍ³ÍÆ¼ö³ö¸ü°ôµÄC++´úÂëʾÀý¡£ ʾÀý1: _blob_resizestatic SQInteger _blob_resize(HSQUIRRELVM v){ SETUP_BLOB(v); SQInteger size; sq_getinteger(v,2,&size); if(!self->Resize(size)) return sq_throwerror(v,_SC("resize failed")); return 0;}
¿ª·¢ÕßID:ShaunOfTheLive£¬ÏîÄ¿Ãû³Æ:OpenCoasterTycoon£¬´úÂëÐÐÊý:9£¬
ʾÀý2: base_calleestatic SQInteger base_callee(HSQUIRRELVM v){ if(v->_callsstacksize > 1) { v->Push(v->_callsstack[v->_callsstacksize - 2]._closure); return 1; } return sq_throwerror(v,_SC("no closure in the calls stack"));}
¿ª·¢ÕßID:Cucurbitace£¬ÏîÄ¿Ãû³Æ:attract£¬´úÂëÐÐÊý:9£¬
ʾÀý3: Transportstop//// Transport stop//SQInteger Transportstop(HSQUIRRELVM vm){ SQInteger numargs = sq_gettop(vm); // check parameter count if(numargs > 1) { return sq_throwerror(vm, "too many parameters, expected at most 0"); } // call the implementation try { AudioEngine::instance().transportStop(); } catch(std::exception const& e) { return sq_throwerror(vm, e.what()); } // void method, returns no value return 0;}
¿ª·¢ÕßID:bipscript£¬ÏîÄ¿Ãû³Æ:bipscript£¬´úÂëÐÐÊý:21£¬
ʾÀý4: sqlang_sr_exitstatic SQInteger sqlang_sr_exit (HSQUIRRELVM J){ if(_sr_J_env.JJ==J) { _sr_J_env.JJ_exit = 1; } else { _sr_J_env.J_exit = 1; } return sq_throwerror(J, _SC("~~ksr~exit~~"));}
¿ª·¢ÕßID:linuxmaniac£¬ÏîÄ¿Ãû³Æ:kamailio£¬´úÂëÐÐÊý:9£¬
ʾÀý5: array_topstatic SQInteger array_top(HSQUIRRELVM v){ SQObject &o=stack_get(v,1); if(_array(o)->Size()>0){ v->Push(_array(o)->Top()); return 1; } else return sq_throwerror(v,_SC("top() on a empty array"));}
¿ª·¢ÕßID:Ayutac£¬ÏîÄ¿Ãû³Æ:OpenTTD£¬´úÂëÐÐÊý:9£¬
ʾÀý6: _blob_reservestatic SQRESULT _blob_reserve(HSQUIRRELVM v){ SETUP_BLOB(v); SQInteger size; sq_getinteger(v,2,&size); if(!self->GrowBufOf(size)) return sq_throwerror(v,_SC("reserve failed")); return 0;}
¿ª·¢ÕßID:gdos£¬ÏîÄ¿Ãû³Æ:squilu-1£¬´úÂëÐÐÊý:9£¬
ʾÀý7: _system_renamestatic SQInteger _system_rename(HSQUIRRELVM v){ const SQChar *oldn,*newn; sq_getstring(v,2,&oldn); sq_getstring(v,3,&newn); if(screname(oldn,newn)==-1) return sq_throwerror(v,_SC("rename() failed")); return 0;}
¿ª·¢ÕßID:ShotaroTsuji£¬ÏîÄ¿Ãû³Æ:mona£¬´úÂëÐÐÊý:9£¬
ʾÀý8: _system_systemstatic SQInteger _system_system(HSQUIRRELVM v){ const SQChar *s; if(SQ_SUCCEEDED(sq_getstring(v,2,&s))){ sq_pushinteger(v,scsystem(s)); return 1; } return sq_throwerror(v,_SC("wrong param"));}
¿ª·¢ÕßID:ShotaroTsuji£¬ÏîÄ¿Ãû³Æ:mona£¬´úÂëÐÐÊý:9£¬
ʾÀý9: sqstd_getfileSQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file){ SQFile *fileobj = NULL; if(SQ_SUCCEEDED(sq_getinstanceup(v,idx,(SQUserPointer*)&fileobj,(SQUserPointer)SQSTD_FILE_TYPE_TAG))) { *file = fileobj->GetHandle(); return SQ_OK; } return sq_throwerror(v,_SC("not a file"));}
¿ª·¢ÕßID:Arpanet81£¬ÏîÄ¿Ãû³Æ:emo-framework£¬´úÂëÐÐÊý:9£¬
ʾÀý10: array_insertstatic SQInteger array_insert(HSQUIRRELVM v){ SQObject &o=stack_get(v,1); SQObject &idx=stack_get(v,2); SQObject &val=stack_get(v,3); if(!_array(o)->Insert(tointeger(idx),val)) return sq_throwerror(v,_SC("index out of range")); return 0;}
¿ª·¢ÕßID:Ayutac£¬ÏîÄ¿Ãû³Æ:OpenTTD£¬´úÂëÐÐÊý:9£¬
ʾÀý11: validate_formatstatic SQInteger validate_format(HSQUIRRELVM v, SQChar *fmt, const SQChar *src, SQInteger n,SQInteger &width){ SQChar *dummy; SQChar swidth[MAX_WFORMAT_LEN]; SQInteger wc = 0; SQInteger start = n; fmt[0] = '%'; while (isfmtchr(src[n])) n++; while (scisdigit(src[n])) { swidth[wc] = src[n]; n++; wc++; if(wc>=MAX_WFORMAT_LEN) return sq_throwerror(v,_SC("width format too long")); } swidth[wc] = '/0'; if(wc > 0) { width = scstrtol(swidth,&dummy,10); } else width = 0; if (src[n] == '.') { n++; wc = 0; while (scisdigit(src[n])) { swidth[wc] = src[n]; n++; wc++; if(wc>=MAX_WFORMAT_LEN) return sq_throwerror(v,_SC("precision format too long")); } swidth[wc] = '/0'; if(wc > 0) { width += scstrtol(swidth,&dummy,10); } } if (n-start > MAX_FORMAT_LEN ) return sq_throwerror(v,_SC("format too long")); memcpy(&fmt[1],&src[start],((n-start)+1)*sizeof(SQChar)); fmt[(n-start)+2] = '/0'; return n;}
¿ª·¢ÕßID:elmindreda£¬ÏîÄ¿Ãû³Æ:Nori£¬´úÂëÐÐÊý:44£¬
ʾÀý12: _regexp_constructorstatic SQInteger _regexp_constructor(HSQUIRRELVM v){ const SQChar *error,*pattern; sq_getstring(v,2,&pattern); SQRex *rex = sqstd_rex_compile(pattern,&error); if(!rex) return sq_throwerror(v,error); sq_setinstanceup(v,1,rex); sq_setreleasehook(v,1,_rexobj_releasehook); return 0;}
¿ª·¢ÕßID:469306621£¬ÏîÄ¿Ãû³Æ:Languages£¬´úÂëÐÐÊý:10£¬
ʾÀý13: sq_mysql_statement_resetstatic SQRESULT sq_mysql_statement_reset(HSQUIRRELVM v){ SQ_FUNC_VARS_NO_TOP(v); GET_mysql_statement_INSTANCE(); if (dlmysql_stmt_reset(self->stmt)) { return sq_throwerror(v, _SC("error reseting prepared statement. MySQL: %s"), dlmysql_stmt_error(self->stmt)); } return 0;}
¿ª·¢ÕßID:mingodad£¬ÏîÄ¿Ãû³Æ:squilu£¬´úÂëÐÐÊý:10£¬
ʾÀý14: sq_mysql_result_col_namestatic SQRESULT sq_mysql_result_col_name(HSQUIRRELVM v){ SQ_FUNC_VARS_NO_TOP(v); GET_mysql_result_INSTANCE(); SQ_GET_INTEGER(v, 2, col); if(col < 0 || col > dlmysql_num_fields(self)-1) return sq_throwerror(v, _SC("invalid col number (" _PRINT_INT_FMT ")"), col); MYSQL_FIELD *fields = dlmysql_fetch_fields(self); sq_pushstring(v, fields[col].name, -1); return 1;}
¿ª·¢ÕßID:mingodad£¬ÏîÄ¿Ãû³Æ:squilu£¬´úÂëÐÐÊý:10£¬
ʾÀý15: sqlang_sr_dropstatic SQInteger sqlang_sr_drop (HSQUIRRELVM J){ if(_sr_J_env.JJ==J) { _sr_J_env.JJ_exit = 1; } else { _sr_J_env.J_exit = 1; } sr_kemi_core_set_drop(NULL); return sq_throwerror(J, _SC("~~ksr~exit~~"));}
¿ª·¢ÕßID:linuxmaniac£¬ÏîÄ¿Ãû³Æ:kamailio£¬´úÂëÐÐÊý:10£¬
ʾÀý16: sq_lib_bind_funcstatic SQInteger sq_lib_bind_func(HSQUIRRELVM v){ void **modbuf; void *mod; void *sym; const SQChar *symname; const char *rettype; sq_getuserdata(v, 1, (void**)&modbuf, NULL); mod = *modbuf; sq_getstring(v, 2, &rettype); sq_getstring(v, 3, &symname); sym = GET_SYM(mod, symname); if (!sym) return sq_throwerror(v, "Cannot find symbol"); int nparam = sq_getsize(v, 4); int size = sizeof(FFIFunc) + sizeof(ffi_type*) * nparam; FFIFunc *ffibuf = (FFIFunc*)sq_newuserdata(v, size); sq_push_delegate_table(v, FFI_LIB_FUNC_TAG); sq_setdelegate(v, -2);// printf("Allocated %d bytes at %p/n", size, ffibuf); ffibuf->func = sym; ffibuf->rettype = *rettype; int i; for (i = 0; i < nparam; i++) { sq_pushinteger(v, i); sq_get(v, 4); ffibuf->params[i] = get_ffi_type(v, -1); if (!ffibuf->params[i]) return SQ_ERROR; sq_poptop(v); } int res = ffi_prep_cif(&ffibuf->cif, FFI_DEFAULT_ABI, nparam, char2ffi_type(*rettype), ffibuf->params); if (res != FFI_OK) return sq_throwerror(v, "Error in ffi_prep_cif"); return 1;}
¿ª·¢ÕßID:gdos£¬ÏîÄ¿Ãû³Æ:squilu-1£¬´úÂëÐÐÊý:43£¬
ʾÀý17: sq_arrayresizeSQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize){ sq_aux_paramscheck(v,1); SQObjectPtr *arr; _GETSAFE_OBJ(v, idx, OT_ARRAY,arr); if(newsize >= 0) { _array(*arr)->Resize(newsize); return SQ_OK; } return sq_throwerror(v,_SC("negative size"));}
¿ª·¢ÕßID:ACMEware£¬ÏîÄ¿Ãû³Æ:Paper-Hurricane£¬´úÂëÐÐÊý:11£¬
ʾÀý18: program_mainstatic SQInteger program_main(HSQUIRRELVM v){ if(sq_gettop(v) != (1 + 3)){ //roottable, userpointer, co_cpu, co_ppu return sq_throwerror(v, wgT("argument number error")); } struct program_config *d; SQRESULT r = qr_userpointer_get(v, (SQUserPointer) &d); if(SQ_FAILED(r)){ return r; } HSQUIRRELVM co_cpu, co_ppu; if(SQ_FAILED(sq_getthread(v, 3, &co_cpu))){ return sq_throwerror(v, wgT("thread error")); } if(SQ_FAILED(sq_getthread(v, 4, &co_ppu))){ return sq_throwerror(v, wgT("thread error")); } SQInteger state_cpu = sq_getvmstate(co_cpu); SQInteger state_ppu = sq_getvmstate(co_ppu); const long sleepms = d->compare == true ? 6 : 2; //W29C040 ¤Ç compare ¤ò¤¹¤ë¤È¡¢error ¤¬³ö¤ë¤Î¤Ç³ö¤Ê¤¤ C++ sqinfo_hasº¯Êý´úÂëʾÀý C++ sq_pushstringº¯Êý´úÂëʾÀý
|