mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
* tidy * Automated clang-tidy change: modernize-concat-nested-namespaces * compile test * fix namespace --------- Co-authored-by: Clang Tidy <clang-tidy@users.noreply.github.com>
180 lines
4.6 KiB
C++
180 lines
4.6 KiB
C++
/** @file
|
|
*
|
|
* @par History
|
|
* - 2005/12/08 Shinigami: New Version added to force Recompiling...
|
|
* - 2006/09/16 Shinigami: New Version... Internal handling of UO.EM Function execution changed.
|
|
* - 2007/11/07 Shinigami: New Version... Removed some tokens like Left+Mid
|
|
* - 2009/08/27 Turley: New Version Muad removed members/methods
|
|
* - 2009/09/16 Turley: New Version removed member isUOKR
|
|
*/
|
|
|
|
|
|
#ifndef __BSCRIPT_FILEFMT_H
|
|
#define __BSCRIPT_FILEFMT_H
|
|
|
|
|
|
namespace Pol::Bscript
|
|
{
|
|
#pragma pack( push, 1 )
|
|
|
|
#define BSCRIPT_FILE_MAGIC0 'C'
|
|
#define BSCRIPT_FILE_MAGIC1 'E'
|
|
#define ESCRIPT_FILE_VER_0000_obs 0x0000
|
|
#define ESCRIPT_FILE_VER_0001_obs 0x0001
|
|
#define ESCRIPT_FILE_VER_0002_obs 0x0002
|
|
#define ESCRIPT_FILE_VER_0003 0x0003
|
|
#define ESCRIPT_FILE_VER_0004 0x0004
|
|
#define ESCRIPT_FILE_VER_0005 0x0005
|
|
#define ESCRIPT_FILE_VER_0006 0x0006
|
|
#define ESCRIPT_FILE_VER_0007 0x0007
|
|
#define ESCRIPT_FILE_VER_0008 0x0008
|
|
#define ESCRIPT_FILE_VER_0009 0x0009
|
|
#define ESCRIPT_FILE_VER_000A 0x000A
|
|
#define ESCRIPT_FILE_VER_000B 0x000B
|
|
#define ESCRIPT_FILE_VER_000C 0x000C
|
|
#define ESCRIPT_FILE_VER_000D 0x000D
|
|
#define ESCRIPT_FILE_VER_000F 0x000F /*unicode*/
|
|
#define ESCRIPT_FILE_VER_0010 0x0010 /*interpolated strings*/
|
|
#define ESCRIPT_FILE_VER_0011 0x0011 /*uninit keyword*/
|
|
#define ESCRIPT_FILE_VER_0012 0x0012 /*funcref table*/
|
|
#define ESCRIPT_FILE_VER_0013 0x0013 /*classes*/
|
|
|
|
/*
|
|
NOTE: Update ESCRIPT_FILE_VER_CURRENT when you make a
|
|
new escript file version, to force recompile of scripts
|
|
and report this to users when an older compiled version
|
|
is attempted to be executed - TJ
|
|
*/
|
|
#define ESCRIPT_FILE_VER_CURRENT ( ESCRIPT_FILE_VER_0013 )
|
|
|
|
struct BSCRIPT_FILE_HDR
|
|
{
|
|
char magic2[2];
|
|
unsigned short version;
|
|
unsigned short globals;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_FILE_HDR ) == 6, "size missmatch" );
|
|
|
|
struct BSCRIPT_SECTION_HDR
|
|
{
|
|
unsigned short type;
|
|
unsigned int length;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_SECTION_HDR ) == 6, "size missmatch" );
|
|
|
|
enum BSCRIPT_SECTION
|
|
{
|
|
BSCRIPT_SECTION_MODULE = 1,
|
|
BSCRIPT_SECTION_CODE = 2,
|
|
BSCRIPT_SECTION_SYMBOLS = 3,
|
|
BSCRIPT_SECTION_PROGDEF = 4,
|
|
BSCRIPT_SECTION_GLOBALVARNAMES = 5,
|
|
BSCRIPT_SECTION_EXPORTED_FUNCTIONS = 6,
|
|
BSCRIPT_SECTION_FUNCTION_REFERENCES = 7,
|
|
BSCRIPT_SECTION_CLASS_TABLE = 8,
|
|
};
|
|
|
|
|
|
struct BSCRIPT_MODULE_HDR
|
|
{
|
|
char modulename[14];
|
|
unsigned int nfuncs;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_MODULE_HDR ) == 18, "size missmatch" );
|
|
|
|
struct BSCRIPT_MODULE_FUNCTION
|
|
{
|
|
char funcname[33];
|
|
unsigned char nargs;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_MODULE_FUNCTION ) == 34, "size missmatch" );
|
|
|
|
struct BSCRIPT_PROGDEF_HDR
|
|
{
|
|
unsigned expectedArgs;
|
|
unsigned char rfu[12];
|
|
};
|
|
static_assert( sizeof( BSCRIPT_PROGDEF_HDR ) == 16, "size missmatch" );
|
|
|
|
struct BSCRIPT_GLOBALVARNAMES_HDR
|
|
{
|
|
unsigned nGlobalVars;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_GLOBALVARNAMES_HDR ) == 4, "size missmatch" );
|
|
struct BSCRIPT_GLOBALVARNAME_HDR
|
|
{
|
|
unsigned namelen;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_GLOBALVARNAME_HDR ) == 4, "size missmatch" );
|
|
|
|
struct BSCRIPT_DBG_INSTRUCTION
|
|
{
|
|
unsigned filenum;
|
|
unsigned linenum;
|
|
unsigned blocknum;
|
|
unsigned statementbegin;
|
|
unsigned rfu1;
|
|
unsigned rfu2;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_DBG_INSTRUCTION ) == 24, "size missmatch" );
|
|
|
|
struct BSCRIPT_EXPORTED_FUNCTION
|
|
{
|
|
char funcname[33];
|
|
unsigned nargs;
|
|
unsigned PC;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_EXPORTED_FUNCTION ) == 41, "size missmatch" );
|
|
|
|
struct BSCRIPT_FUNCTION_REFERENCE
|
|
{
|
|
unsigned address;
|
|
int parameter_count;
|
|
int capture_count;
|
|
bool is_variadic;
|
|
unsigned class_index;
|
|
bool is_constructor;
|
|
unsigned default_parameter_count;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_FUNCTION_REFERENCE ) == 22, "size missmatch" );
|
|
|
|
struct BSCRIPT_FUNCTION_REFERENCE_DEFAULT_PARAMETER
|
|
{
|
|
unsigned address;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_FUNCTION_REFERENCE_DEFAULT_PARAMETER ) == 4, "size missmatch" );
|
|
|
|
struct BSCRIPT_CLASS_TABLE
|
|
{
|
|
unsigned class_count;
|
|
};
|
|
|
|
static_assert( sizeof( BSCRIPT_CLASS_TABLE ) == 4, "size missmatch" );
|
|
|
|
struct BSCRIPT_CLASS_TABLE_ENTRY
|
|
{
|
|
unsigned name_offset;
|
|
unsigned constructor_function_reference_index;
|
|
unsigned constructor_count;
|
|
unsigned method_count;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_CLASS_TABLE_ENTRY ) == 16, "size missmatch" );
|
|
|
|
struct BSCRIPT_CLASS_TABLE_CONSTRUCTOR_ENTRY
|
|
{
|
|
unsigned type_tag_offset;
|
|
};
|
|
static_assert( sizeof( BSCRIPT_CLASS_TABLE_CONSTRUCTOR_ENTRY ) == 4, "size missmatch" );
|
|
|
|
struct BSCRIPT_CLASS_TABLE_METHOD_ENTRY
|
|
{
|
|
unsigned name_offset;
|
|
unsigned function_reference_index;
|
|
};
|
|
|
|
static_assert( sizeof( BSCRIPT_CLASS_TABLE_METHOD_ENTRY ) == 8, "size missmatch" );
|
|
|
|
#pragma pack( pop )
|
|
} // namespace Pol::Bscript
|
|
|
|
#endif
|