Patches
Last changed: -92.222.238.172

.
Summary

Suspend/break a long running script

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. (http://www.horoskop2015.org/)

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 

UTF8 encoded Squirrel strings

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

Endian-Swapping Byte-Code While Saving

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