This patch adds the ability to interrpt or suspend a long running script. If suspended, the script can be resumed with standard API at a later point.
One can also do some application work (like driving a C++ GUI) inside the app QuerySuspend function.
Diff file (against Squirrel 2.5 work sources): QuerySuspend.p0
Source files: QuerySuspend.zip
How to use:
int SQMyQuerySuspend( SQVM *vm ){ if( /* too long time */ ){ return SQ_QUERY_BREAK; // or return SQ_QUERY_SUSPEND; } /* Do some processing / nothing */ return SQ_QUERY_CONTINUE; } // In init section SQVM *vm = /* from somewhere */; vm->SetQuerySuspendFn( SQMyQuerySuspend ); // ... continue
The patch modifies squirrel so that strings are stored with UTF8 encoding internally. This is useful particularly on Unix systems where sizeof(wchar_t)==4
.
Apply to your sources and define SQUTF8 to activate it when building.
Patch file: squtf8.patch
Allows you to perform endian-swapping to your byte-code. Primary benefit is for offline byte-code generation happening on a PC, and then loading on a console with a different endianness.
How to use:
// store previous endian-swapping state SQBool savedState = sq_getendianswapenabled(); // enable endian-swapping prior to calling sq_writeclosure sq_endianswapenable(SQTrue); // now write closure, as normal sq_writeclosure(...); // reset endian-swapping state to previous sq_endianswapenable(savedState);
Zip file with modified source files and corresponding diffs (Squirrel 2.2): EndianSwapping.zip