|
|
|
@ -299,10 +299,59 @@ static const char Lua_header[] =
|
|
|
|
|
" { TValue *io=(o); const Udata *iu = (u); \\\n"
|
|
|
|
|
" io->value_ = iu->user_; settt_(io, iu->ttuv_); \\\n"
|
|
|
|
|
" checkliveness(L,io); }\n"
|
|
|
|
|
"typedef enum {\n"
|
|
|
|
|
"RAVI_TI_NIL,\n"
|
|
|
|
|
"RAVI_TI_FALSE,\n"
|
|
|
|
|
"RAVI_TI_TRUE,\n"
|
|
|
|
|
"RAVI_TI_INTEGER,\n"
|
|
|
|
|
"RAVI_TI_FLOAT,\n"
|
|
|
|
|
"RAVI_TI_INTEGER_ARRAY,\n"
|
|
|
|
|
"RAVI_TI_FLOAT_ARRAY,\n"
|
|
|
|
|
"RAVI_TI_TABLE,\n"
|
|
|
|
|
"RAVI_TI_STRING,\n"
|
|
|
|
|
"RAVI_TI_FUNCTION,\n"
|
|
|
|
|
"RAVI_TI_USERDATA,\n"
|
|
|
|
|
"RAVI_TI_OTHER\n"
|
|
|
|
|
"} ravi_type_index;\n"
|
|
|
|
|
"typedef uint32_t ravi_type_map;\n"
|
|
|
|
|
"#define RAVI_TM_NIL (((ravi_type_map)1)<<RAVI_TI_NIL)\n"
|
|
|
|
|
"#define RAVI_TM_FALSE (((ravi_type_map)1)<<RAVI_TI_FALSE)\n"
|
|
|
|
|
"#define RAVI_TM_TRUE (((ravi_type_map)1)<<RAVI_TI_TRUE)\n"
|
|
|
|
|
"#define RAVI_TM_INTEGER (((ravi_type_map)1)<<RAVI_TI_INTEGER)\n"
|
|
|
|
|
"#define RAVI_TM_FLOAT (((ravi_type_map)1)<<RAVI_TI_FLOAT)\n"
|
|
|
|
|
"#define RAVI_TM_INTEGER_ARRAY (((ravi_type_map)1)<<RAVI_TI_INTEGER_ARRAY)\n"
|
|
|
|
|
"#define RAVI_TM_FLOAT_ARRAY (((ravi_type_map)1)<<RAVI_TI_FLOAT_ARRAY)\n"
|
|
|
|
|
"#define RAVI_TM_TABLE (((ravi_type_map)1)<<RAVI_TI_TABLE)\n"
|
|
|
|
|
"#define RAVI_TM_STRING (((ravi_type_map)1)<<RAVI_TI_STRING)\n"
|
|
|
|
|
"#define RAVI_TM_FUNCTION (((ravi_type_map)1)<<RAVI_TI_FUNCTION)\n"
|
|
|
|
|
"#define RAVI_TM_USERDATA (((ravi_type_map)1)<<RAVI_TI_USERDATA)\n"
|
|
|
|
|
"#define RAVI_TM_OTHER (((ravi_type_map)1)<<RAVI_TI_OTHER)\n"
|
|
|
|
|
"#define RAVI_TM_FALSISH (RAVI_TM_NIL | RAVI_TM_FALSE)\n"
|
|
|
|
|
"#define RAVI_TM_TRUISH (~RAVI_TM_FALSISH)\n"
|
|
|
|
|
"#define RAVI_TM_BOOLEAN (RAVI_TM_FALSE | RAVI_TM_TRUE)\n"
|
|
|
|
|
"#define RAVI_TM_NUMBER (RAVI_TM_INTEGER | RAVI_TM_FLOAT)\n"
|
|
|
|
|
"#define RAVI_TM_INDEXABLE (RAVI_TM_INTEGER_ARRAY | RAVI_TM_FLOAT_ARRAY | RAVI_TM_TABLE)\n"
|
|
|
|
|
"#define RAVI_TM_ANY (~0)\n"
|
|
|
|
|
"typedef enum {\n"
|
|
|
|
|
"RAVI_TNIL = RAVI_TM_NIL, /* NIL */\n"
|
|
|
|
|
"RAVI_TNUMINT = RAVI_TM_INTEGER, /* integer number */\n"
|
|
|
|
|
"RAVI_TNUMFLT = RAVI_TM_FLOAT, /* floating point number */\n"
|
|
|
|
|
"RAVI_TNUMBER = RAVI_TM_NUMBER,\n"
|
|
|
|
|
"RAVI_TARRAYINT = RAVI_TM_INTEGER_ARRAY, /* array of ints */\n"
|
|
|
|
|
"RAVI_TARRAYFLT = RAVI_TM_FLOAT_ARRAY, /* array of doubles */\n"
|
|
|
|
|
"RAVI_TTABLE = RAVI_TM_TABLE, /* Lua table */\n"
|
|
|
|
|
"RAVI_TSTRING = RAVI_TM_STRING | RAVI_TM_NIL, /* string */\n"
|
|
|
|
|
"RAVI_TFUNCTION = RAVI_TM_FUNCTION | RAVI_TM_NIL, /* Lua or C Function */\n"
|
|
|
|
|
"RAVI_TBOOLEAN = RAVI_TM_BOOLEAN | RAVI_TM_NIL, /* boolean */\n"
|
|
|
|
|
"RAVI_TTRUE = RAVI_TM_TRUE,\n"
|
|
|
|
|
"RAVI_TFALSE = RAVI_TM_FALSE,\n"
|
|
|
|
|
"RAVI_TUSERDATA = RAVI_TM_USERDATA | RAVI_TM_NIL, /* userdata or lightuserdata */\n"
|
|
|
|
|
"RAVI_TANY = RAVI_TM_ANY, /* Lua dynamic type */\n"
|
|
|
|
|
"} ravitype_t;\n"
|
|
|
|
|
"typedef struct Upvaldesc {\n"
|
|
|
|
|
" TString *name;\n"
|
|
|
|
|
" TString *usertype;\n"
|
|
|
|
|
" lu_byte ravi_type;\n"
|
|
|
|
|
" ravi_type_map ravi_type;\n"
|
|
|
|
|
" lu_byte instack;\n"
|
|
|
|
|
" lu_byte idx;\n"
|
|
|
|
|
"} Upvaldesc;\n"
|
|
|
|
@ -311,7 +360,7 @@ static const char Lua_header[] =
|
|
|
|
|
" TString *usertype;\n"
|
|
|
|
|
" int startpc;\n"
|
|
|
|
|
" int endpc;\n"
|
|
|
|
|
" lu_byte ravi_type;\n"
|
|
|
|
|
" ravi_type_map ravi_type;\n"
|
|
|
|
|
"} LocVar;\n"
|
|
|
|
|
"typedef enum {\n"
|
|
|
|
|
" RAVI_JIT_NOT_COMPILED = 0,\n"
|
|
|
|
|