@ -216,7 +216,7 @@ struct SaveLoad {
* that is called to save it . address : global = true , offset : global = false */
void * address ; ///< address of variable OR offset of variable in the struct (max offset is 65536)
size_t size ; ///< the sizeof size.
ExtendedSaveLoad FeatureTest ext_feature_test ; ///< extended feature test
SlXv FeatureTest ext_feature_test ; ///< extended feature test
} ;
/** Same as #SaveLoad but global variables are used (for better readability); */
@ -230,7 +230,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the field .
* @ param to Last savegame version that has the field .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest to test ( along with from and to ) which savegames have the field
* @ 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}
@ -243,7 +243,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the field .
* @ param to Last savegame version that has the field .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -255,7 +255,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Type of the reference , a value from # SLRefType .
* @ param from First savegame version that has the field .
* @ param to Last savegame version that has the field .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -268,7 +268,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param length Number of elements in the array .
* @ param from First savegame version that has the array .
* @ param to Last savegame version that has the array .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -281,7 +281,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param length Number of elements in the string ( only used for fixed size buffers ) .
* @ param from First savegame version that has the string .
* @ param to Last savegame version that has the string .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -293,7 +293,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the list .
* @ param to Last savegame version that has the list .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -351,7 +351,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param length Length of the empty space .
* @ param from First savegame version that has the empty space .
* @ param to Last savegame version that has the empty space .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have empty space
* @ param extver SlXv FeatureTest 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, {})
@ -372,7 +372,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the field .
* @ param to Last savegame version that has the field .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest to test ( along with from and to ) which savegames have the field
* @ 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}
@ -384,7 +384,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the field .
* @ param to Last savegame version that has the field .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -395,7 +395,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the field .
* @ param to Last savegame version that has the field .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -407,7 +407,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param length Number of elements in the array .
* @ param from First savegame version that has the array .
* @ param to Last savegame version that has the array .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -419,7 +419,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param length Number of elements in the string ( only used for fixed size buffers ) .
* @ param from First savegame version that has the string .
* @ param to Last savegame version that has the string .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -430,7 +430,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param type Storage of the data in memory and in the savegame .
* @ param from First savegame version that has the list .
* @ param to Last savegame version that has the list .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have the field
* @ param extver SlXv FeatureTest 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, {})
@ -475,7 +475,7 @@ typedef SaveLoad SaveLoadGlobVarList;
* @ param length Length of the empty space .
* @ param from First savegame version that has the empty space .
* @ param to Last savegame version that has the empty space .
* @ param extver ExtendedSaveLoad FeatureTest to test ( along with from and to ) which savegames have empty space
* @ param extver SlXv FeatureTest 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, {}}
@ -502,7 +502,7 @@ static inline bool IsSavegameVersionBefore(uint16 major, byte minor = 0)
* @ param version_to Highest version number that falls within the range .
* @ return Active savegame version falls within the given range .
*/
static inline bool SlIsObjectCurrentlyValid ( uint16 version_from , uint16 version_to , ExtendedSaveLoad FeatureTest ext_feature_test )
static inline bool SlIsObjectCurrentlyValid ( uint16 version_from , uint16 version_to , SlXv FeatureTest ext_feature_test )
{
extern const uint16 SAVEGAME_VERSION ;
if ( ! ext_feature_test . IsFeaturePresent ( SAVEGAME_VERSION , version_from , version_to ) ) return false ;