diff --git a/include/mgba/script/types.h b/include/mgba/script/types.h index 73d85bf48..f52ace715 100644 --- a/include/mgba/script/types.h +++ b/include/mgba/script/types.h @@ -205,6 +205,7 @@ CXX_GUARD_START }; \ const struct mScriptType mSTStructConst_ ## STRUCT = { \ .base = mSCRIPT_TYPE_OBJECT, \ + .isConst = true, \ .details = { \ .cls = &_mSTStructDetails_ ## STRUCT \ }, \ @@ -427,8 +428,9 @@ CXX_GUARD_START #define mSCRIPT_MAKE_F64(VALUE) mSCRIPT_MAKE(mSCRIPT_TYPE_MS_F64, f64, VALUE) #define mSCRIPT_MAKE_CHARP(VALUE) mSCRIPT_MAKE(mSCRIPT_TYPE_MS_CHARP, opaque, VALUE) #define mSCRIPT_MAKE_S(STRUCT, VALUE) mSCRIPT_MAKE(mSCRIPT_TYPE_MS_S(STRUCT), opaque, VALUE) +#define mSCRIPT_MAKE_CS(STRUCT, VALUE) mSCRIPT_MAKE(mSCRIPT_TYPE_MS_CS(STRUCT), copaque, VALUE) -enum { +enum mScriptTypeBase { mSCRIPT_TYPE_VOID = 0, mSCRIPT_TYPE_SINT, mSCRIPT_TYPE_UINT, @@ -505,7 +507,9 @@ struct mScriptTypeClass { struct mScriptValue; struct mScriptType { - int base; + enum mScriptTypeBase base : 8; + bool isConst; + size_t size; const char* name; union { diff --git a/src/script/types.c b/src/script/types.c index 9b2aa9f0b..aa14c3e4a 100644 --- a/src/script/types.c +++ b/src/script/types.c @@ -255,6 +255,7 @@ uint32_t _hashScalar(const struct mScriptValue* val) { x = val->value.s32; break; case mSCRIPT_TYPE_UINT: + default: x = val->value.u32; break; }