|
|
|
@ -234,7 +234,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @note In general, it is better to use one of the SLE_* macros below.
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_GENERAL_X(cmd, base, variable, type, length, from, to, extver) {false, cmd, type, length, from, to, (void*)cpp_offsetof(base, variable), cpp_sizeof(base, variable), extver}
|
|
|
|
|
#define SLE_GENERAL(cmd, base, variable, type, length, from, to) SLE_GENERAL_X(cmd, base, variable, type, length, from, to, {})
|
|
|
|
|
#define SLE_GENERAL(cmd, base, variable, type, length, from, to) SLE_GENERAL_X(cmd, base, variable, type, length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a variable in some savegame versions.
|
|
|
|
@ -246,7 +246,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_CONDVAR_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_VAR, base, variable, type, 0, from, to, extver)
|
|
|
|
|
#define SLE_CONDVAR(base, variable, type, from, to) SLE_CONDVAR_X(base, variable, type, from, to, {})
|
|
|
|
|
#define SLE_CONDVAR(base, variable, type, from, to) SLE_CONDVAR_X(base, variable, type, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a reference in some savegame versions.
|
|
|
|
@ -258,7 +258,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_CONDREF_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_REF, base, variable, type, 0, from, to, extver)
|
|
|
|
|
#define SLE_CONDREF(base, variable, type, from, to) SLE_CONDREF_X(base, variable, type, from, to, {})
|
|
|
|
|
#define SLE_CONDREF(base, variable, type, from, to) SLE_CONDREF_X(base, variable, type, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of an array in some savegame versions.
|
|
|
|
@ -271,7 +271,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_CONDARR_X(base, variable, type, length, from, to, extver) SLE_GENERAL_X(SL_ARR, base, variable, type, length, from, to, extver)
|
|
|
|
|
#define SLE_CONDARR(base, variable, type, length, from, to) SLE_CONDARR_X(base, variable, type, length, from, to, {})
|
|
|
|
|
#define SLE_CONDARR(base, variable, type, length, from, to) SLE_CONDARR_X(base, variable, type, length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a string in some savegame versions.
|
|
|
|
@ -284,7 +284,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_CONDSTR_X(base, variable, type, length, from, to, extver) SLE_GENERAL_X(SL_STR, base, variable, type, length, from, to, extver)
|
|
|
|
|
#define SLE_CONDSTR(base, variable, type, length, from, to) SLE_CONDSTR_X(base, variable, type, length, from, to, {})
|
|
|
|
|
#define SLE_CONDSTR(base, variable, type, length, from, to) SLE_CONDSTR_X(base, variable, type, length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a list in some savegame versions.
|
|
|
|
@ -296,7 +296,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_CONDLST_X(base, variable, type, from, to, extver) SLE_GENERAL_X(SL_LST, base, variable, type, 0, from, to, extver)
|
|
|
|
|
#define SLE_CONDLST(base, variable, type, from, to) SLE_CONDLST_X(base, variable, type, from, to, {})
|
|
|
|
|
#define SLE_CONDLST(base, variable, type, from, to) SLE_CONDLST_X(base, variable, type, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a variable in every version of a savegame.
|
|
|
|
@ -354,16 +354,16 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have empty space
|
|
|
|
|
*/
|
|
|
|
|
#define SLE_CONDNULL_X(length, from, to, extver) SLE_CONDARR_X(NullStruct, null, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, extver)
|
|
|
|
|
#define SLE_CONDNULL(length, from, to) SLE_CONDNULL_X(length, from, to, {})
|
|
|
|
|
#define SLE_CONDNULL(length, from, to) SLE_CONDNULL_X(length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/** Translate values ingame to different values in the savegame and vv. */
|
|
|
|
|
#define SLE_WRITEBYTE(base, variable, value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, value, value)
|
|
|
|
|
|
|
|
|
|
#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, {}}
|
|
|
|
|
#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, {}}
|
|
|
|
|
#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()}
|
|
|
|
|
#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()}
|
|
|
|
|
|
|
|
|
|
/** End marker of a struct/class save or load. */
|
|
|
|
|
#define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL, 0, {}}
|
|
|
|
|
#define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL, 0, SlXvFeatureTest()}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of global simple variables, references (pointers), and arrays.
|
|
|
|
@ -376,7 +376,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @note In general, it is better to use one of the SLEG_* macros below.
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_GENERAL_X(cmd, variable, type, length, from, to, extver) {true, cmd, type, length, from, to, (void*)&variable, sizeof(variable), extver}
|
|
|
|
|
#define SLEG_GENERAL(cmd, variable, type, length, from, to) SLEG_GENERAL_X(cmd, variable, type, length, from, to, {})
|
|
|
|
|
#define SLEG_GENERAL(cmd, variable, type, length, from, to) SLEG_GENERAL_X(cmd, variable, type, length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a global variable in some savegame versions.
|
|
|
|
@ -387,7 +387,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_CONDVAR_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_VAR, variable, type, 0, from, to, extver)
|
|
|
|
|
#define SLEG_CONDVAR(variable, type, from, to) SLEG_CONDVAR_X(variable, type, from, to, {})
|
|
|
|
|
#define SLEG_CONDVAR(variable, type, from, to) SLEG_CONDVAR_X(variable, type, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a global reference in some savegame versions.
|
|
|
|
@ -398,7 +398,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_CONDREF_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_REF, variable, type, 0, from, to, extver)
|
|
|
|
|
#define SLEG_CONDREF(variable, type, from, to) SLEG_CONDREF_X(variable, type, from, to, {})
|
|
|
|
|
#define SLEG_CONDREF(variable, type, from, to) SLEG_CONDREF_X(variable, type, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a global array in some savegame versions.
|
|
|
|
@ -410,7 +410,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_CONDARR_X(variable, type, length, from, to, extver) SLEG_GENERAL_X(SL_ARR, variable, type, length, from, to, extver)
|
|
|
|
|
#define SLEG_CONDARR(variable, type, length, from, to) SLEG_CONDARR_X(variable, type, length, from, to, {})
|
|
|
|
|
#define SLEG_CONDARR(variable, type, length, from, to) SLEG_CONDARR_X(variable, type, length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a global string in some savegame versions.
|
|
|
|
@ -422,7 +422,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_CONDSTR_X(variable, type, length, from, to, extver) SLEG_GENERAL_X(SL_STR, variable, type, length, from, to, extver)
|
|
|
|
|
#define SLEG_CONDSTR(variable, type, length, from, to) SLEG_CONDSTR_X(variable, type, length, from, to, {})
|
|
|
|
|
#define SLEG_CONDSTR(variable, type, length, from, to) SLEG_CONDSTR_X(variable, type, length, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a global list in some savegame versions.
|
|
|
|
@ -433,7 +433,7 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have the field
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_CONDLST_X(variable, type, from, to, extver) SLEG_GENERAL_X(SL_LST, variable, type, 0, from, to, extver)
|
|
|
|
|
#define SLEG_CONDLST(variable, type, from, to) SLEG_CONDLST_X(variable, type, from, to, {})
|
|
|
|
|
#define SLEG_CONDLST(variable, type, from, to) SLEG_CONDLST_X(variable, type, from, to, SlXvFeatureTest())
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Storage of a global variable in every savegame version.
|
|
|
|
@ -477,10 +477,10 @@ typedef SaveLoad SaveLoadGlobVarList;
|
|
|
|
|
* @param to Last savegame version that has the empty space.
|
|
|
|
|
* @param extver SlXvFeatureTest to test (along with from and to) which savegames have empty space
|
|
|
|
|
*/
|
|
|
|
|
#define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL, {}}
|
|
|
|
|
#define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL, SlXvFeatureTest()}
|
|
|
|
|
|
|
|
|
|
/** End marker of global variables save or load. */
|
|
|
|
|
#define SLEG_END() {true, SL_END, 0, 0, 0, 0, NULL, 0, {}}
|
|
|
|
|
#define SLEG_END() {true, SL_END, 0, 0, 0, 0, NULL, 0, SlXvFeatureTest()}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Checks whether the savegame is below \a major.\a minor.
|
|
|
|
|