OpenTTD Source: src/saveload/saveload.h File Reference

OpenTTD Source 13.2.1

Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
saveload.h File Reference
`#include "../fileio_type.h"`
`#include "../fios.h"`
`#include "../strings_type.h"`
`#include "../core/span_type.hpp"`
`#include <optional>`
`#include <string>`
`#include <vector>`

Go to the source code of this file.

## Data Structures
struct | FileToSaveLoad
| Deals with the type of the savegame, independent of extension. More...
struct | ChunkHandler
| Handlers and description of chunk. More...
class | SaveLoadHandler
| Handler for saving/loading an object to/from disk. More...
class | DefaultSaveLoadHandler< TImpl, TObject >
| Default handler for saving/loading an object to/from disk. More...
struct | SaveLoad
| SaveLoad type struct. More...
struct | SaveLoadCompat
| SaveLoad information for backwards compatibility. More...

## Macros
#define | SLE_GENERAL(cmd, base, variable, type, length, from, to, extra) SaveLoad {#variable, cmd, type, length, from, to, cpp_sizeof(base, variable), [] (void *b, size_t) -> void * { assert(b != nullptr); return const_cast<void *>(static_cast<const void *>(std::addressof(static_cast<base *>(b)->variable))); }, extra, nullptr}
| Storage of simple variables, references (pointers), and arrays. More...
#define | SLE_CONDVAR(base, variable, type, from, to) SLE_GENERAL(SL_VAR, base, variable, type, 0, from, to, 0)
| Storage of a variable in some savegame versions. More...
#define | SLE_CONDREF(base, variable, type, from, to) SLE_GENERAL(SL_REF, base, variable, type, 0, from, to, 0)
| Storage of a reference in some savegame versions. More...
#define | SLE_CONDARR(base, variable, type, length, from, to) SLE_GENERAL(SL_ARR, base, variable, type, length, from, to, 0)
| Storage of a fixed-size array of SL_VAR elements in some savegame versions. More...
#define | SLE_CONDSTR(base, variable, type, length, from, to) SLE_GENERAL(SL_STR, base, variable, type, length, from, to, 0)
| Storage of a string in some savegame versions. More...
#define | SLE_CONDSSTR(base, variable, type, from, to) SLE_GENERAL(SL_STDSTR, base, variable, type, 0, from, to, 0)
| Storage of a `std::string` in some savegame versions. More...
#define | SLE_CONDREFLIST(base, variable, type, from, to) SLE_GENERAL(SL_REFLIST, base, variable, type, 0, from, to, 0)
| Storage of a list of SL_REF elements in some savegame versions. More...
#define | SLE_CONDDEQUE(base, variable, type, from, to) SLE_GENERAL(SL_DEQUE, base, variable, type, 0, from, to, 0)
| Storage of a deque of SL_VAR elements in some savegame versions. More...
#define | SLE_VAR(base, variable, type) SLE_CONDVAR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a variable in every version of a savegame. More...
#define | SLE_REF(base, variable, type) SLE_CONDREF(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a reference in every version of a savegame. More...
#define | SLE_ARR(base, variable, type, length) SLE_CONDARR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of fixed-size array of SL_VAR elements in every version of a savegame. More...
#define | SLE_STR(base, variable, type, length) SLE_CONDSTR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a string in every savegame version. More...
#define | SLE_SSTR(base, variable, type) SLE_CONDSSTR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a `std::string` in every savegame version. More...
#define | SLE_REFLIST(base, variable, type) SLE_CONDREFLIST(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a list of SL_REF elements in every savegame version. More...
#define | SLE_SAVEBYTE(base, variable) SLE_GENERAL(SL_SAVEBYTE, base, variable, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, 0)
| Only write byte during saving; never read it during loading. More...
#define | SLEG_GENERAL(name, cmd, variable, type, length, from, to, extra) SaveLoad {name, cmd, type, length, from, to, sizeof(variable), [] (void *, size_t) -> void * { return static_cast<void *>(std::addressof(variable)); }, extra, nullptr}
| Storage of global simple variables, references (pointers), and arrays. More...
#define | SLEG_CONDVAR(name, variable, type, from, to) SLEG_GENERAL(name, SL_VAR, variable, type, 0, from, to, 0)
| Storage of a global variable in some savegame versions. More...
#define | SLEG_CONDREF(name, variable, type, from, to) SLEG_GENERAL(name, SL_REF, variable, type, 0, from, to, 0)
| Storage of a global reference in some savegame versions. More...
#define | SLEG_CONDARR(name, variable, type, length, from, to) SLEG_GENERAL(name, SL_ARR, variable, type, length, from, to, 0)
| Storage of a global fixed-size array of SL_VAR elements in some savegame versions. More...
#define | SLEG_CONDSTR(name, variable, type, length, from, to) SLEG_GENERAL(name, SL_STR, variable, type, length, from, to, 0)
| Storage of a global string in some savegame versions. More...
#define | SLEG_CONDSSTR(name, variable, type, from, to) SLEG_GENERAL(name, SL_STDSTR, variable, type, 0, from, to, 0)
| Storage of a global `std::string` in some savegame versions. More...
#define | SLEG_CONDSTRUCT(name, handler, from, to) SaveLoad {name, SL_STRUCT, 0, 0, from, to, 0, nullptr, 0, std::make_shared<handler>()}
| Storage of a structs in some savegame versions. More...
#define | SLEG_CONDREFLIST(name, variable, type, from, to) SLEG_GENERAL(name, SL_REFLIST, variable, type, 0, from, to, 0)
| Storage of a global reference list in some savegame versions. More...
#define | SLEG_CONDVECTOR(name, variable, type, from, to) SLEG_GENERAL(name, SL_VECTOR, variable, type, 0, from, to, 0)
| Storage of a global vector of SL_VAR elements in some savegame versions. More...
#define | SLEG_CONDSTRUCTLIST(name, handler, from, to) SaveLoad {name, SL_STRUCTLIST, 0, 0, from, to, 0, nullptr, 0, std::make_shared<handler>()}
| Storage of a list of structs in some savegame versions. More...
#define | SLEG_VAR(name, variable, type) SLEG_CONDVAR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global variable in every savegame version. More...
#define | SLEG_REF(name, variable, type) SLEG_CONDREF(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global reference in every savegame version. More...
#define | SLEG_ARR(name, variable, type) SLEG_CONDARR(name, variable, type, lengthof(variable), SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global fixed-size array of SL_VAR elements in every savegame version. More...
#define | SLEG_STR(name, variable, type) SLEG_CONDSTR(name, variable, type, sizeof(variable), SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global string in every savegame version. More...
#define | SLEG_SSTR(name, variable, type) SLEG_CONDSSTR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global `std::string` in every savegame version. More...
#define | SLEG_STRUCT(name, handler) SLEG_CONDSTRUCT(name, handler, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a structs in every savegame version. More...
#define | SLEG_REFLIST(name, variable, type) SLEG_CONDREFLIST(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global reference list in every savegame version. More...
#define | SLEG_VECTOR(name, variable, type) SLEG_CONDVECTOR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a global vector of SL_VAR elements in every savegame version. More...
#define | SLEG_STRUCTLIST(name, handler) SLEG_CONDSTRUCTLIST(name, handler, SL_MIN_VERSION, SL_MAX_VERSION)
| Storage of a list of structs in every savegame version. More...
#define | SLC_VAR(name) {name, 0, SL_MIN_VERSION, SL_MAX_VERSION}
| Field name where the real SaveLoad can be located. More...
#define | SLC_NULL(length, from, to) {{}, length, from, to}
| Empty space in every savegame version. More...
#define | SLC_END() {{}, 0, SL_MIN_VERSION, SL_MIN_VERSION}
| End marker of compat variables save or load.

## Typedefs
typedef void | AutolengthProc(void *arg)
using | ChunkHandlerRef = std::reference_wrapper< const ChunkHandler >
| A reference to ChunkHandler.
using | ChunkHandlerTable = span< const ChunkHandlerRef >
| A table of ChunkHandler entries.
using | SaveLoadTable = span< const struct SaveLoad >
| A table of SaveLoad entries.
using | SaveLoadCompatTable = span< const struct SaveLoadCompat >
| A table of SaveLoadCompat entries.
typedef uint32 | VarType
typedef void * | SaveLoadAddrProc(void *base, size_t extra)

## Enumerations
enum | SaveLoadVersion : uint16 { SL_MIN_VERSION, SLV_1, SLV_2, SLV_3, SLV_4, SLV_5, SLV_6, SLV_7, SLV_8, SLV_9, SLV_10, SLV_11, SLV_12, SLV_13, SLV_14, SLV_15, SLV_16, SLV_17, SLV_18, SLV_19, SLV_20, SLV_21, SLV_22, SLV_23, SLV_24, SLV_25, SLV_26, SLV_27, SLV_28, SLV_29, SLV_30, SLV_31, SLV_32, SLV_33, SLV_34, SLV_35, SLV_36, SLV_37, SLV_38, SLV_39, SLV_40, SLV_41, SLV_42, SLV_43, SLV_44, SLV_45, SLV_46, SLV_47, SLV_48, SLV_49, SLV_50, SLV_51, SLV_52, SLV_53, SLV_54, SLV_55, SLV_56, SLV_57, SLV_58, SLV_59, SLV_60, SLV_61, SLV_62, SLV_63, SLV_64, SLV_65, SLV_66, SLV_67, SLV_68, SLV_69, SLV_70, SLV_71, SLV_72, SLV_73, SLV_74, SLV_75, SLV_76, SLV_77, SLV_78, SLV_79, SLV_80, SLV_81, SLV_82, SLV_83, SLV_84, SLV_85, SLV_86, SLV_87, SLV_88, SLV_89, SLV_90, SLV_91, SLV_92, SLV_93, SLV_94, SLV_95, SLV_96, SLV_97, SLV_98, SLV_99, SLV_100, SLV_101, SLV_102, SLV_103, SLV_104, SLV_105, SLV_106, SLV_107, SLV_108, SLV_109, SLV_110, SLV_111, SLV_112, SLV_113, SLV_114, SLV_115, SLV_116, SLV_117, SLV_118, SLV_119, SLV_120, SLV_121, SLV_122, SLV_123, SLV_124, SLV_125, SLV_126, SLV_127, SLV_128, SLV_129, SLV_130, SLV_131, SLV_132, SLV_133, SLV_134, SLV_135, SLV_136, SLV_137, SLV_138, SLV_139, SLV_140, SLV_141, SLV_142, SLV_143, SLV_144, SLV_145, SLV_146, SLV_147, SLV_148, SLV_149, SLV_150, SLV_151, SLV_152, SLV_153, SLV_154, SLV_155, SLV_156, SLV_157, SLV_158, SLV_159, SLV_160, SLV_161, SLV_162, SLV_163, SLV_164, SLV_165, SLV_166, SLV_167, SLV_168, SLV_169, SLV_170, SLV_171, SLV_172, SLV_173, SLV_174, SLV_175, SLV_176, SLV_177, SLV_178, SLV_179, SLV_180, SLV_181, SLV_182, SLV_183, SLV_184, SLV_185, SLV_186, SLV_187, SLV_188, SLV_189, SLV_190, SLV_191, SLV_192, SLV_193, SLV_194, SLV_195, SLV_196, SLV_197, SLV_198, SLV_EXTEND_CARGOTYPES, SLV_EXTEND_RAILTYPES, SLV_EXTEND_PERSISTENT_STORAGE, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SLV_SHIP_PATH_CACHE, SLV_SHIP_ROTATION, SLV_GROUP_LIVERIES, SLV_SHIPS_STOP_IN_LOCKS, SLV_FIX_CARGO_MONITOR, SLV_TOWN_CARGOGEN, SLV_SHIP_CURVE_PENALTY, SLV_SERVE_NEUTRAL_INDUSTRIES, SLV_ROADVEH_PATH_CACHE, SLV_REMOVE_OPF, SLV_TREES_WATER_CLASS, SLV_ROAD_TYPES, SLV_SCRIPT_MEMLIMIT, SLV_MULTITILE_DOCKS, SLV_TRADING_AGE, SLV_ENDING_YEAR, SLV_REMOVE_TOWN_CARGO_CACHE, SLV_START_PATCHPACKS, SLV_END_PATCHPACKS = 286, SLV_GS_INDUSTRY_CONTROL, SLV_VEH_MOTION_COUNTER, SLV_INDUSTRY_TEXT, SLV_MAPGEN_SETTINGS_REVAMP, SLV_GROUP_REPLACE_WAGON_REMOVAL, SLV_CUSTOM_SUBSIDY_DURATION, SLV_SAVELOAD_LIST_LENGTH, SLV_RIFF_TO_ARRAY, SLV_TABLE_CHUNKS, SLV_SCRIPT_INT64, SLV_LINKGRAPH_TRAVEL_TIME, SLV_DOCK_DOCKINGTILES, SLV_REPAIR_OBJECT_DOCKING_TILES, SLV_U64_TICK_COUNTER, SLV_LAST_LOADING_TICK, SLV_MULTITRACK_LEVEL_CROSSINGS, SL_MAX_VERSION }
| SaveLoad versions Previous savegame versions, the trunk revision where they were introduced and the released version that had that particular savegame version. More...
enum | SaveOrLoadResult { SL_OK = 0, SL_ERROR = 1, SL_REINIT = 2 }
| Save or load result codes. More...
enum | SavegameType { SGT_TTD, SGT_TTDP1, SGT_TTDP2, SGT_OTTD, SGT_TTO, SGT_INVALID = 0xFF }
| Types of save games. More...
enum | ChunkType { CH_RIFF = 0, CH_ARRAY = 1, CH_SPARSE_ARRAY = 2, CH_TABLE = 3, CH_SPARSE_TABLE = 4, CH_TYPE_MASK = 0xf, CH_READONLY }
| Type of a chunk. More...
enum | SLRefType { REF_ORDER = 0, REF_VEHICLE = 1, REF_STATION = 2, REF_TOWN = 3, REF_VEHICLE_OLD = 4, REF_ROADSTOPS = 5, REF_ENGINE_RENEWS = 6, REF_CARGO_PACKET = 7, REF_ORDERLIST = 8, REF_STORAGE = 9, REF_LINK_GRAPH = 10, REF_LINK_GRAPH_JOB = 11 }
| Type of reference (SLE_REF, SLE_CONDREF). More...
enum | VarTypes { SLE_FILE_END = 0, SLE_FILE_I8 = 1, SLE_FILE_U8 = 2, SLE_FILE_I16 = 3, SLE_FILE_U16 = 4, SLE_FILE_I32 = 5, SLE_FILE_U32 = 6, SLE_FILE_I64 = 7, SLE_FILE_U64 = 8, SLE_FILE_STRINGID = 9, SLE_FILE_STRING = 10, SLE_FILE_STRUCT = 11, SLE_FILE_TYPE_MASK = 0xf, SLE_FILE_HAS_LENGTH_FIELD = 1 << 4, SLE_VAR_BL = 0 << 4, SLE_VAR_I8 = 1 << 4, SLE_VAR_U8 = 2 << 4, SLE_VAR_I16 = 3 << 4, SLE_VAR_U16 = 4 << 4, SLE_VAR_I32 = 5 << 4, SLE_VAR_U32 = 6 << 4, SLE_VAR_I64 = 7 << 4, SLE_VAR_U64 = 8 << 4, SLE_VAR_NULL = 9 << 4, SLE_VAR_STRB = 10 << 4, SLE_VAR_STR = 12 << 4, SLE_VAR_STRQ = 13 << 4, SLE_VAR_NAME = 14 << 4, SLE_VAR_CHAR = SLE_VAR_I8, SLE_BOOL = SLE_FILE_I8 | SLE_VAR_BL, SLE_INT8 = SLE_FILE_I8 | SLE_VAR_I8, SLE_UINT8 = SLE_FILE_U8 | SLE_VAR_U8, SLE_INT16 = SLE_FILE_I16 | SLE_VAR_I16, SLE_UINT16 = SLE_FILE_U16 | SLE_VAR_U16, SLE_INT32 = SLE_FILE_I32 | SLE_VAR_I32, SLE_UINT32 = SLE_FILE_U32 | SLE_VAR_U32, SLE_INT64 = SLE_FILE_I64 | SLE_VAR_I64, SLE_UINT64 = SLE_FILE_U64 | SLE_VAR_U64, SLE_CHAR = SLE_FILE_I8 | SLE_VAR_CHAR, SLE_STRINGID = SLE_FILE_STRINGID | SLE_VAR_U32, SLE_STRINGBUF = SLE_FILE_STRING | SLE_VAR_STRB, SLE_STRING = SLE_FILE_STRING | SLE_VAR_STR, SLE_STRINGQUOTE = SLE_FILE_STRING | SLE_VAR_STRQ, SLE_NAME = SLE_FILE_STRINGID | SLE_VAR_NAME, SLE_UINT = SLE_UINT32, SLE_INT = SLE_INT32, SLE_STRB = SLE_STRINGBUF, SLE_STR = SLE_STRING, SLE_STRQ = SLE_STRINGQUOTE, SLF_ALLOW_CONTROL = 1 << 8, SLF_ALLOW_NEWLINE = 1 << 9 }
| VarTypes is the general bitmasked magic type that tells us certain characteristics about the variable it refers to. More...
enum | SaveLoadType : byte { SL_VAR = 0, SL_REF = 1, SL_STRUCT = 2, SL_STR = 3, SL_STDSTR = 4, SL_ARR = 5, SL_DEQUE = 6, SL_VECTOR = 7, SL_REFLIST = 8, SL_STRUCTLIST = 9, SL_SAVEBYTE = 10, SL_NULL = 11 }
| Type of data saved. More...

## Functions
void | GenerateDefaultSaveName (char *buf, const char *last)
| Fill the buffer with the default name for a savegame or screenshot. More...
void | SetSaveLoadError (StringID str)
| Set the error message from outside of the actual loading/saving of the game (AfterLoadGame and friends)
const char * | GetSaveLoadErrorString ()
| Get the string representation of the error message.
SaveOrLoadResult | SaveOrLoad (const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, Subdirectory sb, bool threaded=true)
| Main Save or Load function where the high-level saveload functions are handled. More...
void | WaitTillSaved ()
void | ProcessAsyncSaveFinish ()
| Handle async save finishes.
void | DoExitSave ()
| Do a save when exiting the game (_settings_client.gui.autosave_on_exit)
void | DoAutoOrNetsave (FiosNumberedSaveName &counter)
| Create an autosave or netsave. More...
SaveOrLoadResult | SaveWithFilter (struct SaveFilter *writer, bool threaded)
| Save the game using a (writer) filter. More...
SaveOrLoadResult | LoadWithFilter (struct LoadFilter *reader)
| Load the game using a (reader) filter. More...
static bool | IsSavegameVersionBefore (SaveLoadVersion major, byte minor=0)
| Checks whether the savegame is below major. More...
static bool | IsSavegameVersionBeforeOrAt (SaveLoadVersion major)
| Checks whether the savegame is below or at major. More...
static bool | SlIsObjectCurrentlyValid (SaveLoadVersion version_from, SaveLoadVersion version_to)
| Checks if some version from/to combination falls within the range of the active savegame version. More...
static VarType | GetVarMemType (VarType type)
| Get the NumberType of a setting. More...
static VarType | GetVarFileType (VarType type)
| Get the FileType of a setting. More...
static bool | IsNumericType (VarType conv)
| Check if the given saveload type is a numeric type. More...
static void * | GetVariableAddress (const void *object, const SaveLoad &sld)
| Get the address of the variable. More...
int64 | ReadValue (const void *ptr, VarType conv)
| Return a signed-long version of the value of a setting. More...
void | WriteValue (void *ptr, VarType conv, int64 val)
| Write the value of a setting. More...
void | SlSetArrayIndex (uint index)
int | SlIterateArray ()
| Iterate through the elements of an array and read the whole thing. More...
void | SlSetStructListLength (size_t length)
| Set the length of this list. More...
size_t | SlGetStructListLength (size_t limit)
| Get the length of this list; if it exceeds the limit, error out. More...
void | SlAutolength (AutolengthProc *proc, void *arg)
| Do something of which I have no idea what it is :P. More...
size_t | SlGetFieldLength ()
| Get the length of the current object.
void | SlSetLength (size_t length)
| Sets the length of either a RIFF object or the number of items in an array. More...
size_t | SlCalcObjMemberLength (const void *object, const SaveLoad &sld)
size_t | SlCalcObjLength (const void *object, const SaveLoadTable &slt)
| Calculate the size of an object. More...
byte | SlReadByte ()
| Wrapper for reading a byte from the buffer. More...
void | SlWriteByte (byte b)
| Wrapper for writing a byte to the dumper. More...
void | SlGlobList (const SaveLoadTable &slt)
| Save or Load (a list of) global variables. More...
void | SlCopy (void *object, size_t length, VarType conv)
| Copy a list of SL_VARs to/from a savegame. More...
std::vector< SaveLoad > | SlTableHeader (const SaveLoadTable &slt)
| Save or Load a table header. More...
std::vector< SaveLoad > | SlCompatTableHeader (const SaveLoadTable &slt, const SaveLoadCompatTable &slct)
| Load a table header in a savegame compatible way. More...
void | SlObject (void *object, const SaveLoadTable &slt)
| Main SaveLoad function. More...
void NORETURN | SlError (StringID string, const char *extra_msg=nullptr)
| Error handler. More...
void NORETURN | SlErrorCorrupt (const char *msg)
| Error handler for corrupt savegames. More...
void NORETURN | SlErrorCorruptFmt (const char *format,...) WARN_FORMAT(1
void NORETURN bool | SaveloadCrashWithMissingNewGRFs ()
| Did loading the savegame cause a crash? If so, were NewGRFs missing? More...
static void | SlSkipBytes (size_t length)
| Read in bytes from the file/data structure but don't do anything with them, discarding them in effect. More...

## Variables
FileToSaveLoad | _file_to_saveload
| File to save or load in the openttd loop.
std::string | _savegame_format
| how to compress savegames
bool | _do_autosave
| are we doing an autosave at the moment?

## Detailed Description

Functions/types related to saving and loading games.

Definition in file saveload.h.

## Macro Definition Documentation

## ◆ SLC_NULL

#define SLC_NULL | ( |  | length,
|  |  | from,
|  |  | to
| ) |  | {{}, length, from, to}

Empty space in every savegame version.

Parameters

  length | Length of the empty space.
  from | First savegame version that has the empty space.
  to | Last savegame version that has the empty space.

Definition at line 1019 of file saveload.h.

## ◆ SLC_VAR

#define SLC_VAR | ( |  | name | ) | {name, 0, SL_MIN_VERSION, SL_MAX_VERSION}

Field name where the real SaveLoad can be located.

Parameters

  name | The name of the field.

Definition at line 1011 of file saveload.h.

## ◆ SLE_ARR

#define SLE_ARR | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | length
| ) |  | SLE_CONDARR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of fixed-size array of SL_VAR elements in every version of a savegame.

Parameters

  base | Name of the class or struct containing the array.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  length | Number of elements in the array.

Definition at line 795 of file saveload.h.

## ◆ SLE_CONDARR

#define SLE_CONDARR | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | length,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_ARR, base, variable, type, length, from, to, 0)

Storage of a fixed-size array of SL_VAR elements in some savegame versions.

Parameters

  base | Name of the class or struct containing the array.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  length | Number of elements in the array.
  from | First savegame version that has the array.
  to | Last savegame version that has the array.

Definition at line 729 of file saveload.h.

## ◆ SLE_CONDDEQUE

#define SLE_CONDDEQUE | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_DEQUE, base, variable, type, 0, from, to, 0)

Storage of a deque of SL_VAR elements in some savegame versions.

Parameters

  base | Name of the class or struct containing the list.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the list.
  to | Last savegame version that has the list.

Definition at line 770 of file saveload.h.

## ◆ SLE_CONDREF

#define SLE_CONDREF | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_REF, base, variable, type, 0, from, to, 0)

Storage of a reference in some savegame versions.

Parameters

  base | Name of the class or struct containing the variable.
  variable | Name of the variable in the class or struct referenced by base.
  type | Type of the reference, a value from SLRefType.
  from | First savegame version that has the field.
  to | Last savegame version that has the field.

Definition at line 718 of file saveload.h.

## ◆ SLE_CONDREFLIST

#define SLE_CONDREFLIST | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_REFLIST, base, variable, type, 0, from, to, 0)

Storage of a list of SL_REF elements in some savegame versions.

Parameters

  base | Name of the class or struct containing the list.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the list.
  to | Last savegame version that has the list.

Definition at line 760 of file saveload.h.

## ◆ SLE_CONDSSTR

#define SLE_CONDSSTR | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_STDSTR, base, variable, type, 0, from, to, 0)

Storage of a `std::string` in some savegame versions.

Parameters

  base | Name of the class or struct containing the string.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the string.
  to | Last savegame version that has the string.

Definition at line 750 of file saveload.h.

## ◆ SLE_CONDSTR

#define SLE_CONDSTR | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | length,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_STR, base, variable, type, length, from, to, 0)

Storage of a string in some savegame versions.

Parameters

  base | Name of the class or struct containing the string.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  length | Number of elements in the string (only used for fixed size buffers).
  from | First savegame version that has the string.
  to | Last savegame version that has the string.

Definition at line 740 of file saveload.h.

## ◆ SLE_CONDVAR

#define SLE_CONDVAR | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLE_GENERAL(SL_VAR, base, variable, type, 0, from, to, 0)

Storage of a variable in some savegame versions.

Parameters

  base | Name of the class or struct containing the variable.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the field.
  to | Last savegame version that has the field.

Definition at line 708 of file saveload.h.

## ◆ SLE_GENERAL

#define SLE_GENERAL | ( |  | cmd,
|  |  | base,
|  |  | variable,
|  |  | type,
|  |  | length,
|  |  | from,
|  |  | to,
|  |  | extra
| ) |  | SaveLoad {#variable, cmd, type, length, from, to, cpp_sizeof(base, variable), [] (void *b, size_t) -> void * { assert(b != nullptr); return const_cast<void *>(static_cast<const void *>(std::addressof(static_cast<base *>(b)->variable))); }, extra, nullptr}

Storage of simple variables, references (pointers), and arrays.

Parameters

  cmd | Load/save type.

See also
  SaveLoadType

Parameters

  base | Name of the class or struct containing the variable.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the field.
  to | Last savegame version that has the field.
  extra | Extra data to pass to the address callback function.

Note
  In general, it is better to use one of the SLE_* macros below.

Definition at line 698 of file saveload.h.

## ◆ SLE_REF

#define SLE_REF | ( |  | base,
|  |  | variable,
|  |  | type
| ) |  | SLE_CONDREF(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a reference in every version of a savegame.

Parameters

  base | Name of the class or struct containing the variable.
  variable | Name of the variable in the class or struct referenced by base.
  type | Type of the reference, a value from SLRefType.

Definition at line 786 of file saveload.h.

## ◆ SLE_REFLIST

#define SLE_REFLIST | ( |  | base,
|  |  | variable,
|  |  | type
| ) |  | SLE_CONDREFLIST(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a list of SL_REF elements in every savegame version.

Parameters

  base | Name of the class or struct containing the list.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.

Definition at line 820 of file saveload.h.

## ◆ SLE_SAVEBYTE

#define SLE_SAVEBYTE | ( |  | base,
|  |  | variable
| ) |  | SLE_GENERAL(SL_SAVEBYTE, base, variable, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, 0)

Only write byte during saving; never read it during loading.

When using SLE_SAVEBYTE you will have to read this byte before the table this is in is read. This also means SLE_SAVEBYTE can only be used at the top of a chunk. This is intended to be used to indicate what type of entry this is in a list of entries.

Parameters

  base | Name of the class or struct containing the variable.
  variable | Name of the variable in the class or struct referenced by base.

Definition at line 832 of file saveload.h.

## ◆ SLE_SSTR

#define SLE_SSTR | ( |  | base,
|  |  | variable,
|  |  | type
| ) |  | SLE_CONDSSTR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a `std::string` in every savegame version.

Parameters

  base | Name of the class or struct containing the string.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.

Definition at line 812 of file saveload.h.

## ◆ SLE_STR

#define SLE_STR | ( |  | base,
|  |  | variable,
|  |  | type,
|  |  | length
| ) |  | SLE_CONDSTR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a string in every savegame version.

Parameters

  base | Name of the class or struct containing the string.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.
  length | Number of elements in the string (only used for fixed size buffers).

Definition at line 804 of file saveload.h.

## ◆ SLE_VAR

#define SLE_VAR | ( |  | base,
|  |  | variable,
|  |  | type
| ) |  | SLE_CONDVAR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a variable in every version of a savegame.

Parameters

  base | Name of the class or struct containing the variable.
  variable | Name of the variable in the class or struct referenced by base.
  type | Storage of the data in memory and in the savegame.

Definition at line 778 of file saveload.h.

## ◆ SLEG_ARR

#define SLEG_ARR | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDARR(name, variable, type, lengthof(variable), SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global fixed-size array of SL_VAR elements in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 959 of file saveload.h.

## ◆ SLEG_CONDARR

#define SLEG_CONDARR | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | length,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_ARR, variable, type, length, from, to, 0)

Storage of a global fixed-size array of SL_VAR elements in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  length | Number of elements in the array.
  from | First savegame version that has the array.
  to | Last savegame version that has the array.

Definition at line 876 of file saveload.h.

## ◆ SLEG_CONDREF

#define SLEG_CONDREF | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_REF, variable, type, 0, from, to, 0)

Storage of a global reference in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the field.
  to | Last savegame version that has the field.

Definition at line 865 of file saveload.h.

## ◆ SLEG_CONDREFLIST

#define SLEG_CONDREFLIST | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_REFLIST, variable, type, 0, from, to, 0)

Storage of a global reference list in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the list.
  to | Last savegame version that has the list.

Definition at line 916 of file saveload.h.

## ◆ SLEG_CONDSSTR

#define SLEG_CONDSSTR | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_STDSTR, variable, type, 0, from, to, 0)

Storage of a global `std::string` in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the string.
  to | Last savegame version that has the string.

Definition at line 897 of file saveload.h.

## ◆ SLEG_CONDSTR

#define SLEG_CONDSTR | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | length,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_STR, variable, type, length, from, to, 0)

Storage of a global string in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  length | Number of elements in the string (only used for fixed size buffers).
  from | First savegame version that has the string.
  to | Last savegame version that has the string.

Definition at line 887 of file saveload.h.

## ◆ SLEG_CONDSTRUCT

#define SLEG_CONDSTRUCT | ( |  | name,
|  |  | handler,
|  |  | from,
|  |  | to
| ) |  | SaveLoad {name, SL_STRUCT, 0, 0, from, to, 0, nullptr, 0, std::make_shared<handler>()}

Storage of a structs in some savegame versions.

Parameters

  name | The name of the field.
  handler | SaveLoadHandler for the structs.
  from | First savegame version that has the struct.
  to | Last savegame version that has the struct.

Definition at line 906 of file saveload.h.

## ◆ SLEG_CONDSTRUCTLIST

#define SLEG_CONDSTRUCTLIST | ( |  | name,
|  |  | handler,
|  |  | from,
|  |  | to
| ) |  | SaveLoad {name, SL_STRUCTLIST, 0, 0, from, to, 0, nullptr, 0, std::make_shared<handler>()}

Storage of a list of structs in some savegame versions.

Parameters

  name | The name of the field.
  handler | SaveLoadHandler for the list of structs.
  from | First savegame version that has the list.
  to | Last savegame version that has the list.

Definition at line 935 of file saveload.h.

## ◆ SLEG_CONDVAR

#define SLEG_CONDVAR | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_VAR, variable, type, 0, from, to, 0)

Storage of a global variable in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the field.
  to | Last savegame version that has the field.

Definition at line 855 of file saveload.h.

## ◆ SLEG_CONDVECTOR

#define SLEG_CONDVECTOR | ( |  | name,
|  |  | variable,
|  |  | type,
|  |  | from,
|  |  | to
| ) |  | SLEG_GENERAL(name, SL_VECTOR, variable, type, 0, from, to, 0)

Storage of a global vector of SL_VAR elements in some savegame versions.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the list.
  to | Last savegame version that has the list.

Definition at line 926 of file saveload.h.

## ◆ SLEG_GENERAL

#define SLEG_GENERAL | ( |  | name,
|  |  | cmd,
|  |  | variable,
|  |  | type,
|  |  | length,
|  |  | from,
|  |  | to,
|  |  | extra
| ) |  | SaveLoad {name, cmd, type, length, from, to, sizeof(variable), [] (void *, size_t) -> void * { return static_cast<void *>(std::addressof(variable)); }, extra, nullptr}

Storage of global simple variables, references (pointers), and arrays.

Parameters

  name | The name of the field.
  cmd | Load/save type.

See also
  SaveLoadType

Parameters

  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.
  from | First savegame version that has the field.
  to | Last savegame version that has the field.
  extra | Extra data to pass to the address callback function.

Note
  In general, it is better to use one of the SLEG_* macros below.

Definition at line 845 of file saveload.h.

## ◆ SLEG_REF

#define SLEG_REF | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDREF(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global reference in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 951 of file saveload.h.

## ◆ SLEG_REFLIST

#define SLEG_REFLIST | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDREFLIST(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global reference list in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 990 of file saveload.h.

## ◆ SLEG_SSTR

#define SLEG_SSTR | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDSSTR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global `std::string` in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 975 of file saveload.h.

## ◆ SLEG_STR

#define SLEG_STR | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDSTR(name, variable, type, sizeof(variable), SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global string in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 967 of file saveload.h.

## ◆ SLEG_STRUCT

#define SLEG_STRUCT | ( |  | name,
|  |  | handler
| ) |  | SLEG_CONDSTRUCT(name, handler, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a structs in every savegame version.

Parameters

  name | The name of the field.
  handler | SaveLoadHandler for the structs.

Definition at line 982 of file saveload.h.

## ◆ SLEG_STRUCTLIST

#define SLEG_STRUCTLIST | ( |  | name,
|  |  | handler
| ) |  | SLEG_CONDSTRUCTLIST(name, handler, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a list of structs in every savegame version.

Parameters

  name | The name of the field.
  handler | SaveLoadHandler for the list of structs.

Definition at line 1005 of file saveload.h.

## ◆ SLEG_VAR

#define SLEG_VAR | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDVAR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global variable in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 943 of file saveload.h.

## ◆ SLEG_VECTOR

#define SLEG_VECTOR | ( |  | name,
|  |  | variable,
|  |  | type
| ) |  | SLEG_CONDVECTOR(name, variable, type, SL_MIN_VERSION, SL_MAX_VERSION)

Storage of a global vector of SL_VAR elements in every savegame version.

Parameters

  name | The name of the field.
  variable | Name of the global variable.
  type | Storage of the data in memory and in the savegame.

Definition at line 998 of file saveload.h.

## Enumeration Type Documentation

## ◆ ChunkType

enum ChunkType

Type of a chunk.

Enumerator
CH_TYPE_MASK | All ChunkType values have to be within this mask.
CH_READONLY | Chunk is never saved.

Definition at line 400 of file saveload.h.

## ◆ SavegameType

enum SavegameType

Types of save games.

Enumerator
SGT_TTD | TTD savegame (can be detected incorrectly)
SGT_TTDP1 | TTDP savegame ( -//- ) (data at NW border)
SGT_TTDP2 | TTDP savegame in new format (data at SE border)
SGT_OTTD | OTTD savegame.
SGT_TTO | TTO savegame.
SGT_INVALID | broken savegame (used internally)

Definition at line 373 of file saveload.h.

## ◆ SaveLoadType

enum SaveLoadType : byte

Type of data saved.

Enumerator
SL_VAR | Save/load a variable.
SL_REF | Save/load a reference.
SL_STRUCT | Save/load a struct.
SL_STR | Save/load a string.
SL_STDSTR | Save/load a `std::string`.
SL_ARR | Save/load a fixed-size array of SL_VAR elements.
SL_DEQUE | Save/load a deque of SL_VAR elements.
SL_VECTOR | Save/load a vector of SL_VAR elements.
SL_REFLIST | Save/load a list of SL_REF elements.
SL_STRUCTLIST | Save/load a list of structs.
SL_SAVEBYTE | Save (but not load) a byte.
SL_NULL | Save null-bytes and load to nowhere.

Definition at line 638 of file saveload.h.

## ◆ SaveLoadVersion

enum SaveLoadVersion : uint16

SaveLoad versions Previous savegame versions, the trunk revision where they were introduced and the released version that had that particular savegame version.

Up to savegame version 18 there is a minor version as well.

Older entries keep their original numbering.

Newer entries should use a descriptive labels, numeric version and PR can be added to comment.

Note that this list must not be reordered.

Enumerator
SL_MIN_VERSION | First savegame version.
SLV_1 | 1.0 0.1.x, 0.2.x
SLV_2 | 2.0 0.3.0 2.1 0.3.1, 0.3.2
SLV_3 | 3.x lost
SLV_4 | 4.0 1 4.1 122 0.3.3, 0.3.4 4.2 1222 0.3.5 4.3 1417 4.4 1426
SLV_5 | 5.0 1429 5.1 1440 5.2 1525 0.3.6
SLV_6 | 6.0 1721 6.1 1768
SLV_7 | 7.0 1770
SLV_8 | 8.0 1786
SLV_9 | 9.0 1909
SLV_10 | 10.0 2030
SLV_11 | 11.0 2033 11.1 2041
SLV_12 | 12.1 2046
SLV_13 | 13.1 2080 0.4.0, 0.4.0.1
SLV_14 | 14.0 2441
SLV_15 | 15.0 2499
SLV_16 | 16.0 2817 16.1 3155
SLV_17 | 17.0 3212 17.1 3218
SLV_18 | 18 3227
SLV_19 | 19 3396
SLV_20 | 20 3403
SLV_21 | 21 3472 0.4.x
SLV_22 | 22 3726
SLV_23 | 23 3915
SLV_24 | 24 4150
SLV_25 | 25 4259
SLV_26 | 26 4466
SLV_27 | 27 4757
SLV_28 | 28 4987
SLV_29 | 29 5070
SLV_30 | 30 5946
SLV_31 | 31 5999
SLV_32 | 32 6001
SLV_33 | 33 6440
SLV_34 | 34 6455
SLV_35 | 35 6602
SLV_36 | 36 6624
SLV_37 | 37 7182
SLV_38 | 38 7195
SLV_39 | 39 7269
SLV_40 | 40 7326
SLV_41 | 41 7348 0.5.x
SLV_42 | 42 7573
SLV_43 | 43 7642
SLV_44 | 44 8144
SLV_45 | 45 8501
SLV_46 | 46 8705
SLV_47 | 47 8735
SLV_48 | 48 8935
SLV_49 | 49 8969
SLV_50 | 50 8973
SLV_51 | 51 8978
SLV_52 | 52 9066
SLV_53 | 53 9316
SLV_54 | 54 9613
SLV_55 | 55 9638
SLV_56 | 56 9667
SLV_57 | 57 9691
SLV_58 | 58 9762
SLV_59 | 59 9779
SLV_60 | 60 9874
SLV_61 | 61 9892
SLV_62 | 62 9905
SLV_63 | 63 9956
SLV_64 | 64 10006
SLV_65 | 65 10210
SLV_66 | 66 10211
SLV_67 | 67 10236
SLV_68 | 68 10266
SLV_69 | 69 10319
SLV_70 | 70 10541
SLV_71 | 71 10567
SLV_72 | 72 10601
SLV_73 | 73 10903
SLV_74 | 74 11030
SLV_75 | 75 11107
SLV_76 | 76 11139
SLV_77 | 77 11172
SLV_78 | 78 11176
SLV_79 | 79 11188
SLV_80 | 80 11228
SLV_81 | 81 11244
SLV_82 | 82 11410
SLV_83 | 83 11589
SLV_84 | 84 11822
SLV_85 | 85 11874
SLV_86 | 86 12042
SLV_87 | 87 12129
SLV_88 | 88 12134
SLV_89 | 89 12160
SLV_90 | 90 12293
SLV_91 | 91 12347
SLV_92 | 92 12381 0.6.x
SLV_93 | 93 12648
SLV_94 | 94 12816
SLV_95 | 95 12924
SLV_96 | 96 13226
SLV_97 | 97 13256
SLV_98 | 98 13375
SLV_99 | 99 13838
SLV_100 | 100 13952
SLV_101 | 101 14233
SLV_102 | 102 14332
SLV_103 | 103 14598
SLV_104 | 104 14735
SLV_105 | 105 14803
SLV_106 | 106 14919
SLV_107 | 107 15027
SLV_108 | 108 15045
SLV_109 | 109 15075
SLV_110 | 110 15148
SLV_111 | 111 15190
SLV_112 | 112 15290
SLV_113 | 113 15340
SLV_114 | 114 15601
SLV_115 | 115 15695
SLV_116 | 116 15893 0.7.x
SLV_117 | 117 16037
SLV_118 | 118 16129
SLV_119 | 119 16242
SLV_120 | 120 16439
SLV_121 | 121 16694
SLV_122 | 122 16855
SLV_123 | 123 16909
SLV_124 | 124 16993
SLV_125 | 125 17113
SLV_126 | 126 17433
SLV_127 | 127 17439
SLV_128 | 128 18281
SLV_129 | 129 18292
SLV_130 | 130 18404
SLV_131 | 131 18481
SLV_132 | 132 18522
SLV_133 | 133 18674
SLV_134 | 134 18703
SLV_135 | 135 18719
SLV_136 | 136 18764
SLV_137 | 137 18912
SLV_138 | 138 18942 1.0.x
SLV_139 | 139 19346
SLV_140 | 140 19382
SLV_141 | 141 19799
SLV_142 | 142 20003
SLV_143 | 143 20048
SLV_144 | 144 20334
SLV_145 | 145 20376
SLV_146 | 146 20446
SLV_147 | 147 20621
SLV_148 | 148 20659
SLV_149 | 149 20832
SLV_150 | 150 20857
SLV_151 | 151 20918
SLV_152 | 152 21171
SLV_153 | 153 21263
SLV_154 | 154 21426
SLV_155 | 155 21453
SLV_156 | 156 21728
SLV_157 | 157 21862
SLV_158 | 158 21933
SLV_159 | 159 21962
SLV_160 | 160 21974 1.1.x
SLV_161 | 161 22567
SLV_162 | 162 22713
SLV_163 | 163 22767
SLV_164 | 164 23290
SLV_165 | 165 23304
SLV_166 | 166 23415
SLV_167 | 167 23504
SLV_168 | 168 23637
SLV_169 | 169 23816
SLV_170 | 170 23826
SLV_171 | 171 23835
SLV_172 | 172 23947
SLV_173 | 173 23967 1.2.0-RC1
SLV_174 | 174 23973 1.2.x
SLV_175 | 175 24136
SLV_176 | 176 24446
SLV_177 | 177 24619
SLV_178 | 178 24789
SLV_179 | 179 24810
SLV_180 | 180 24998 1.3.x
SLV_181 | 181 25012
SLV_182 | 182 25115 FS#5492, r25259, r25296 Goal status
SLV_183 | 183 25363 Cargodist
SLV_184 | 184 25508 Unit localisation split
SLV_185 | 185 25620 Storybooks
SLV_186 | 186 25833 Objects storage
SLV_187 | 187 25899 Linkgraph - restricted flows
SLV_188 | 188 26169 v1.4 FS#5831 Unify RV travel time
SLV_189 | 189 26450 Hierarchical vehicle subgroups
SLV_190 | 190 26547 Separate order travel and wait times
SLV_191 | 191 26636 FS#6026 Fix disaster vehicle storage (No bump) 191 26646 FS#6041 Linkgraph - store locations
SLV_192 | 192 26700 FS#6066 Fix saving of order backups
SLV_193 | 193 26802
SLV_194 | 194 26881 v1.5
SLV_195 | 195 27572 v1.6.1
SLV_196 | 196 27778 v1.7
SLV_197 | 197 27978 v1.8
SLV_198 | 198 PR#6763 Switch town growth rate and counter to actual game ticks
SLV_EXTEND_CARGOTYPES | 199 PR#6802 Extend cargotypes to 64
SLV_EXTEND_RAILTYPES | 200 PR#6805 Extend railtypes to 64, adding uint16 to map array.
SLV_EXTEND_PERSISTENT_STORAGE | 201 PR#6885 Extend NewGRF persistent storages.
SLV_EXTEND_INDUSTRY_CARGO_SLOTS | 202 PR#6867 Increase industry cargo slots to 16 in, 16 out
SLV_SHIP_PATH_CACHE | 203 PR#7072 Add path cache for ships
SLV_SHIP_ROTATION | 204 PR#7065 Add extra rotation stages for ships.
SLV_GROUP_LIVERIES | 205 PR#7108 Livery storage change and group liveries.
SLV_SHIPS_STOP_IN_LOCKS | 206 PR#7150 Ship/lock movement changes.
SLV_FIX_CARGO_MONITOR | 207 PR#7175 v1.9 Cargo monitor data packing fix to support 64 cargotypes.
SLV_TOWN_CARGOGEN | 208 PR#6965 New algorithms for town building cargo generation.
SLV_SHIP_CURVE_PENALTY | 209 PR#7289 Configurable ship curve penalties.
SLV_SERVE_NEUTRAL_INDUSTRIES | 210 PR#7234 Company stations can serve industries with attached neutral stations.
SLV_ROADVEH_PATH_CACHE | 211 PR#7261 Add path cache for road vehicles.
SLV_REMOVE_OPF | 212 PR#7245 Remove OPF.
SLV_TREES_WATER_CLASS | 213 PR#7405 WaterClass update for tree tiles.
SLV_ROAD_TYPES | 214 PR#6811 NewGRF road types.
SLV_SCRIPT_MEMLIMIT | 215 PR#7516 Limit on AI/GS memory consumption.
SLV_MULTITILE_DOCKS | 216 PR#7380 Multiple docks per station.
SLV_TRADING_AGE | 217 PR#7780 Configurable company trading age.
SLV_ENDING_YEAR | 218 PR#7747 v1.10 Configurable ending year.
SLV_REMOVE_TOWN_CARGO_CACHE | 219 PR#8258 Remove town cargo acceptance and production caches.
SLV_START_PATCHPACKS | 220 First known patchpack to use a version just above ours.
SLV_END_PATCHPACKS | 286 Last known patchpack to use a version just above ours.
SLV_GS_INDUSTRY_CONTROL | 287 PR#7912 and PR#8115 GS industry control.
SLV_VEH_MOTION_COUNTER | 288 PR#8591 Desync safe motion counter
SLV_INDUSTRY_TEXT | 289 PR#8576 v1.11.0-RC1 Additional GS text for industries.
SLV_MAPGEN_SETTINGS_REVAMP | 290 PR#8891 v1.11 Revamp of some mapgen settings (snow coverage, desert coverage, heightmap height, custom terrain type).
SLV_GROUP_REPLACE_WAGON_REMOVAL | 291 PR#7441 Per-group wagon removal flag.
SLV_CUSTOM_SUBSIDY_DURATION | 292 PR#9081 Configurable subsidy duration.
SLV_SAVELOAD_LIST_LENGTH | 293 PR#9374 Consistency in list length with SL_STRUCT / SL_STRUCTLIST / SL_DEQUE / SL_REFLIST.
SLV_RIFF_TO_ARRAY | 294 PR#9375 Changed many CH_RIFF chunks to CH_ARRAY chunks.
SLV_TABLE_CHUNKS | 295 PR#9322 Introduction of CH_TABLE and CH_SPARSE_TABLE.
SLV_SCRIPT_INT64 | 296 PR#9415 SQInteger is 64bit but was saved as 32bit.
SLV_LINKGRAPH_TRAVEL_TIME | 297 PR#9457 v12.0-RC1 Store travel time in the linkgraph.
SLV_DOCK_DOCKINGTILES | 298 PR#9578 All tiles around docks may be docking tiles.
SLV_REPAIR_OBJECT_DOCKING_TILES | 299 PR#9594 v12.0 Fixing issue with docking tiles overlapping objects.
SLV_U64_TICK_COUNTER | 300 PR#10035 Make _tick_counter 64bit to avoid wrapping.
SLV_LAST_LOADING_TICK | 301 PR#9693 Store tick of last loading for vehicles.
SLV_MULTITRACK_LEVEL_CROSSINGS | 302 PR#9931 v13.0 Multi-track level crossings.
SL_MAX_VERSION | Highest possible saveload version.

Definition at line 34 of file saveload.h.

## ◆ SaveOrLoadResult

enum SaveOrLoadResult

Save or load result codes.

Enumerator
SL_OK | completed successfully
SL_ERROR | error that was caught before internal structures were modified
SL_REINIT | error that was caught in the middle of updating game state, need to clear it. (can only happen during load)

Definition at line 352 of file saveload.h.

## ◆ SLRefType

enum SLRefType

Type of reference (SLE_REF, SLE_CONDREF).

Enumerator
REF_ORDER | Load/save a reference to an order.
REF_VEHICLE | Load/save a reference to a vehicle.
REF_STATION | Load/save a reference to a station.
REF_TOWN | Load/save a reference to a town.
REF_VEHICLE_OLD | Load/save an old-style reference to a vehicle (for pre-4.4 savegames).
REF_ROADSTOPS | Load/save a reference to a bus/truck stop.
REF_ENGINE_RENEWS | Load/save a reference to an engine renewal (autoreplace).
REF_CARGO_PACKET | Load/save a reference to a cargo packet.
REF_ORDERLIST | Load/save a reference to an orderlist.
REF_STORAGE | Load/save a reference to a persistent storage.
REF_LINK_GRAPH | Load/save a reference to a link graph.
REF_LINK_GRAPH_JOB | Load/save a reference to a link graph job.

Definition at line 540 of file saveload.h.

## ◆ VarTypes

enum VarTypes

VarTypes is the general bitmasked magic type that tells us certain characteristics about the variable it refers to.

For example SLE_FILE_* gives the size(type) as it would be in the savegame and SLE_VAR_* the size(type) as it is in memory during runtime. These are the first 8 bits (0-3 SLE_FILE, 4-7 SLE_VAR). Bits 8-15 are reserved for various flags as explained below

Enumerator
SLE_FILE_END | Used to mark end-of-header in tables.
SLE_FILE_STRINGID | StringID offset into strings-array.
SLE_FILE_TYPE_MASK | Mask to get the file-type (and not any flags).
SLE_FILE_HAS_LENGTH_FIELD | Bit stored in savegame to indicate field has a length field for each entry.
SLE_VAR_NULL | useful to write zeros in savegame.
SLE_VAR_STRB | string (with pre-allocated buffer)
SLE_VAR_STR | string pointer
SLE_VAR_STRQ | string pointer enclosed in quotes
SLE_VAR_NAME | old custom name to be converted to a char pointer
SLF_ALLOW_CONTROL | Allow control codes in the strings.
SLF_ALLOW_NEWLINE | Allow new lines in the strings.

Definition at line 563 of file saveload.h.

## Function Documentation

## ◆ DoAutoOrNetsave()

void DoAutoOrNetsave | ( | FiosNumberedSaveName & | counter | ) |

Create an autosave or netsave.

Parameters

  counter | A reference to the counter variable to be used for rotating the file name.
  netsave | Indicates if this is a regular autosave or a netsave.

Definition at line 3325 of file saveload.cpp.

Referenced by ClientNetworkEmergencySave(), and DoAutosave().

## ◆ GenerateDefaultSaveName()

void GenerateDefaultSaveName | ( | char * | buf,
|  | const char * | last
| ) |  |

Fill the buffer with the default name for a savegame or screenshot.

Parameters

  buf | the buffer to write to.
  last | the last element in the buffer.

Definition at line 3354 of file saveload.cpp.

References _local_company, _settings_client, GUISettings::date_format_in_default_names, ClientSettings::gui, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and SetDParam().

Referenced by SaveLoadWindow::GenerateFileName().

## ◆ GetVarFileType()

static VarType GetVarFileType | ( | VarType | type | ) |
| inlinestatic

Get the FileType of a setting.

This describes the integer type as it is represented in a savegame/file

Parameters

  type | VarType holding information about the file-type

Returns
  the SLE_FILE_* part of a variable-type description

Definition at line 1080 of file saveload.h.

Referenced by GetSavegameFileType(), GetSettingsDesc(), and SlCalcConvFileLen().

## ◆ GetVariableAddress()

static void* GetVariableAddress | ( | const void * | object,
|  | const SaveLoad & | sld
| ) |  |
| inlinestatic

Get the address of the variable.

Null-variables don't have an address, everything else has a callback function that returns the address based on the saveload data and the current object for non-globals.

Definition at line 1100 of file saveload.h.

References SaveLoad::address_proc, SaveLoad::conv, SaveLoad::extra_data, GetVarMemType(), and SLE_VAR_NULL.

Referenced by ListSettingDesc::FormatValue(), ListSettingDesc::ParseValue(), IntSettingDesc::Read(), StringSettingDesc::Read(), IntSettingDesc::Write(), and StringSettingDesc::Write().

## ◆ GetVarMemType()

static VarType GetVarMemType | ( | VarType | type | ) |
| inlinestatic

Get the NumberType of a setting.

This describes the integer type as it is represented in memory

Parameters

  type | VarType holding information about the variable-type

Returns
  the SLE_VAR_* part of a variable-type description

Definition at line 1069 of file saveload.h.

Referenced by StringSettingDesc::FormatValue(), ListSettingDesc::FormatValue(), GetVariableAddress(), IsNumericType(), StringSettingDesc::IsSameValue(), IsVariableSizeRight(), IntSettingDesc::MakeValueValid(), ListSettingDesc::ParseValue(), ReadValue(), SetSettingValue(), SlCalcConvMemLen(), SlCalcDequeLen(), SlCalcStringLen(), SlCalcVectorLen(), SlCopyInternal(), SlDeque(), SlString(), SlVector(), and WriteValue().

## ◆ IsNumericType()

static bool IsNumericType | ( | VarType | conv | ) |
| inlinestatic

Check if the given saveload type is a numeric type.

Parameters

  conv | the type to check

Returns
  True if it's a numeric type.

Definition at line 1090 of file saveload.h.

References GetVarMemType().

## ◆ IsSavegameVersionBefore()

static bool IsSavegameVersionBefore | ( | SaveLoadVersion | major,
|  | byte | minor = `0`
| ) |  |
| inlinestatic

Checks whether the savegame is below major.

minor.

Parameters

  major | Major number of the version to check against.
  minor | Minor number of the version to check against. If minor is 0 or not specified, only the major number is checked.

Returns
  Savegame version is earlier than the specified version.

Definition at line 1030 of file saveload.h.

References _sl_minor_version, and _sl_version.

Referenced by CargoPacket::AfterLoad(), AfterLoadLinkGraphs(), AfterLoadStoryBook(), Order::ConvertFromOldSavegame(), ORDRChunkHandler::FixPointers(), CITYChunkHandler::FixPointers(), STNSChunkHandler::FixPointers(), STNNChunkHandler::FixPointers(), SlTownSupplied::GetNumCargo(), SlStationGoods::GetNumCargo(), SlCompanyLiveries::GetNumLiveries(), GetSavegameFileType(), GetSettingsDesc(), HandleOldDiffCustom(), IntToReference(), PRICChunkHandler::Load(), CAPRChunkHandler::Load(), ANITChunkHandler::Load(), SIGNChunkHandler::Load(), CHTSChunkHandler::Load(), CMDLChunkHandler::Load(), CMPUChunkHandler::Load(), ORDRChunkHandler::Load(), IBLDChunkHandler::Load(), MAPEChunkHandler::Load(), LGRSChunkHandler::Load(), ScriptInstance::LoadObjects(), LoadSettings(), MoveWaypointsToBaseStations(), and SlCalcRefLen().

## ◆ IsSavegameVersionBeforeOrAt()

static bool IsSavegameVersionBeforeOrAt | ( | SaveLoadVersion | major | ) |
| inlinestatic

Checks whether the savegame is below or at major.

This should be used to repair data from existing savegames which is no longer corrupted in new savegames, but for which otherwise no savegame bump is required.

Parameters

  major | Major number of the version to check against.

Returns
  Savegame version is at most the specified version.

Definition at line 1044 of file saveload.h.

References _sl_version.

## ◆ LoadWithFilter()

SaveOrLoadResult LoadWithFilter | ( | LoadFilter * | reader | ) |

Load the game using a (reader) filter.

Parameters

  reader | The filter to read the savegame from.

Returns
  Return the result of the action. SL_OK or SL_REINIT ("unload" the game)

Definition at line 3214 of file saveload.cpp.

References _sl, SaveLoadParams::action, ClearSaveLoadState(), DoLoad(), SL_REINIT, and SLA_LOAD.

## ◆ ReadValue()

int64 ReadValue | ( | const void * | ptr,
|  | VarType | conv
| ) |  |

Return a signed-long version of the value of a setting.

Parameters

  ptr | pointer to the variable
  conv | type of variable, can be a non-clean type, eg one with other flags because it is parsed

Returns
  returns the value of the pointer-setting

Definition at line 805 of file saveload.cpp.

References GetVarMemType().

Referenced by IntSettingDesc::Read().

## ◆ SaveloadCrashWithMissingNewGRFs()

void NORETURN bool SaveloadCrashWithMissingNewGRFs | ( |  | ) |

Did loading the savegame cause a crash? If so, were NewGRFs missing?

Returns
  when the saveload crashed due to missing NewGRFs.

Definition at line 365 of file afterload.cpp.

References _saveload_crash_with_missing_newgrfs.

Referenced by HandleCrash().

## ◆ SaveOrLoad()

SaveOrLoadResult SaveOrLoad | ( | const std::string & | filename,
|  | SaveLoadOperation | fop,
|  | DetailedFileType | dft,
|  | Subdirectory | sb,
|  | bool | threaded
| ) |  |

Main Save or Load function where the high-level saveload functions are handled.

It opens the savegame, selects format and checks versions

Parameters

  filename | The name of the savegame being created/loaded
  fop | Save or load mode. Load can also be a TTD(Patch) game.
  sb | The sub directory to save the savegame in
  threaded | True when threaded saving is allowed

Returns
  Return the result of the action. SL_OK, SL_ERROR, or SL_REINIT ("unload" the game)

Definition at line 3234 of file saveload.cpp.

References _do_autosave, _sl, DFT_GAME_FILE, INVALID_STRING_ID, SaveLoadParams::saveinprogress, ShowErrorMessage(), SL_OK, SLO_SAVE, and WL_ERROR.

Referenced by DEF_CONSOLE_CMD(), DoExitSave(), and CrashLog::WriteSavegame().

## ◆ SaveWithFilter()

SaveOrLoadResult SaveWithFilter | ( | SaveFilter * | writer,
|  | bool | threaded
| ) |  |

Save the game using a (writer) filter.

Parameters

  writer | The filter to write the savegame to.
  threaded | Whether to try to perform the saving asynchronously.

Returns
  Return the result of the action. SL_OK or SL_ERROR

Definition at line 3056 of file saveload.cpp.

References _sl, SaveLoadParams::action, ClearSaveLoadState(), DoSave(), SL_ERROR, and SLA_SAVE.

## ◆ SlAutolength()

void SlAutolength | ( | AutolengthProc * | proc,
|  | void * | arg
| ) |  |

Do something of which I have no idea what it is :P.

Parameters

  proc | The callback procedure that is called
  arg | The variable that will be used for the callback procedure

Definition at line 2094 of file saveload.cpp.

## ◆ SlCalcObjLength()

size_t SlCalcObjLength | ( | const void * | object,
|  | const SaveLoadTable & | slt
| ) |  |

Calculate the size of an object.

Parameters

  object | to be measured.
  slt | The SaveLoad table with objects to save/load.

Returns
  size of given object.

Definition at line 1595 of file saveload.cpp.

Referenced by SlObject().

## ◆ SlCompatTableHeader()

std::vector<SaveLoad> SlCompatTableHeader | ( | const SaveLoadTable & | slt,
|  | const SaveLoadCompatTable & | slct
| ) |  |

Load a table header in a savegame compatible way.

If the savegame was made before table headers were added, it will fall back to the SaveLoadCompatTable for the order of fields while loading.

Note
  You only have to call this function if the chunk existed as a non-table type before converting it to a table. New chunks created as table can call SlTableHeader() directly.

Parameters

  slt | The SaveLoad table with objects to save/load.
  slct | The SaveLoadCompat table the original order of the fields.

Returns
  When loading, the ordered SaveLoad array to use; otherwise an empty list.

Definition at line 2030 of file saveload.cpp.

References _sl, SaveLoadParams::action, SaveLoadParams::block_mode, SLA_LOAD, and SLA_LOAD_CHECK.

Referenced by NewGRFMappingChunkHandler::Load(), PSACChunkHandler::Load(), GOALChunkHandler::Load(), ERNWChunkHandler::Load(), MAPSChunkHandler::Load(), GRPSChunkHandler::Load(), DEPTChunkHandler::Load(), SUBSChunkHandler::Load(), SIGNChunkHandler::Load(), OBJSChunkHandler::Load(), CHTSChunkHandler::Load(), STPEChunkHandler::Load(), GSDTChunkHandler::Load(), AIPLChunkHandler::Load(), CMDLChunkHandler::Load(), ECMYChunkHandler::Load(), INDYChunkHandler::Load(), STPAChunkHandler::Load(), ENGNChunkHandler::Load(), CAPYChunkHandler::Load(), CMPUChunkHandler::Load(), CAPAChunkHandler::Load(), RAILChunkHandler::Load(), IBLDChunkHandler::Load(), VIEWChunkHandler::Load(), GSTRChunkHandler::Load(), ITBLChunkHandler::Load(), EIDSChunkHandler::Load(), ORDLChunkHandler::Load(), LGRPChunkHandler::Load(), LGRJChunkHandler::Load(), CITYChunkHandler::Load(), BKORChunkHandler::Load(), LGRSChunkHandler::Load(), STNSChunkHandler::Load(), PLYRChunkHandler::Load(), STNNChunkHandler::Load(), ROADChunkHandler::Load(), VEHSChunkHandler::Load(), MAPSChunkHandler::LoadCheck(), PLYRChunkHandler::LoadCheck(), and LoadSettings().

## ◆ SlCopy()

void SlCopy | ( | void * | object,
|  | size_t | length,
|  | VarType | conv
| ) |  |

Copy a list of SL_VARs to/from a savegame.

These entries are copied as-is, and you as caller have to make sure things like length-fields are calculated correctly.

Parameters

  object | The object being manipulated.
  length | The length of the object in elements
  conv | VarType type of the items.

Definition at line 1152 of file saveload.cpp.

References _sl, SaveLoadParams::action, SaveLoadParams::need_length, NL_CALCLENGTH, NL_NONE, SLA_NULL, SLA_PTRS, SlCalcConvFileLen(), SlCopyInternal(), and SlSetLength().

Referenced by ANITChunkHandler::Load(), MAPTChunkHandler::Load(), MAPHChunkHandler::Load(), NAMEChunkHandler::Load(), MAPOChunkHandler::Load(), MAP2ChunkHandler::Load(), ENGSChunkHandler::Load(), M3LOChunkHandler::Load(), M3HIChunkHandler::Load(), MAP5ChunkHandler::Load(), MAPEChunkHandler::Load(), MAP7ChunkHandler::Load(), MAP8ChunkHandler::Load(), and ScriptInstance::LoadObjects().

## ◆ SlError()

void NORETURN SlError | ( | StringID | string,
|  | const char * | extra_msg
| ) |  |

Error handler.

Sets everything up to show an error message and to clean up the mess of a partial savegame load.

Parameters

  string | The translatable error message to show.
  extra_msg | An extra error message coming from one of the APIs.

Note
  This function does never return as it throws an exception to break out of all the saveload code.

Definition at line 333 of file saveload.cpp.

References _load_check_data, _sl, SaveLoadParams::action, LoadCheckData::error, LoadCheckData::error_data, SaveLoadParams::error_str, SaveLoadParams::extra_msg, free(), SLA_LOAD, SLA_LOAD_CHECK, SLA_PTRS, SlNullPointers(), and stredup().

Referenced by DoLoad(), PacketWriter::Finish(), LZMALoadFilter::LZMALoadFilter(), LZMASaveFilter::LZMASaveFilter(), LZOLoadFilter::LZOLoadFilter(), LZOSaveFilter::LZOSaveFilter(), LZMALoadFilter::Read(), SlErrorCorrupt(), PacketWriter::Write(), FileWriter::Write(), ZlibSaveFilter::WriteLoop(), LZMASaveFilter::WriteLoop(), and ZlibSaveFilter::ZlibSaveFilter().

## ◆ SlErrorCorrupt()

void NORETURN SlErrorCorrupt | ( | const char * | msg | ) |

Error handler for corrupt savegames.

Sets everything up to show the error message and to clean up the mess of a partial savegame load.

Parameters

  msg | Location the corruption has been spotted.

Note
  This function does never return as it throws an exception to break out of all the saveload code.

Definition at line 365 of file saveload.cpp.

References SlError().

Referenced by IntToReference(), NewGRFMappingChunkHandler::Load(), CHTSChunkHandler::Load(), NAMEChunkHandler::Load(), IBLDChunkHandler::Load(), ITBLChunkHandler::Load(), LGRSChunkHandler::Load(), LoadSettings(), SetWaterClassDependingOnSurroundings(), SlErrorCorruptFmt(), and SlReadSimpleGamma().

## ◆ SlGetStructListLength()

size_t SlGetStructListLength | ( | size_t | limit | ) |

Get the length of this list; if it exceeds the limit, error out.

Parameters

  limit | The maximum size the list can be.

Returns
  The length of the list.

Definition at line 1826 of file saveload.cpp.

Referenced by SlTownSupplied::GetNumCargo(), SlStationGoods::GetNumCargo(), and SlSkipHandler::Load().

## ◆ SlGlobList()

void SlGlobList | ( | const SaveLoadTable & | slt | ) |

Save or Load (a list of) global variables.

Parameters

  slt | The SaveLoad table with objects to save/load.

Definition at line 2084 of file saveload.cpp.

References SlObject().

Referenced by IBLDChunkHandler::Load().

## ◆ SlIsObjectCurrentlyValid()

static bool SlIsObjectCurrentlyValid | ( | SaveLoadVersion | version_from,
|  | SaveLoadVersion | version_to
| ) |  |
| inlinestatic

Checks if some version from/to combination falls within the range of the active savegame version.

Parameters

  version_from | Inclusive savegame version lower bound.
  version_to | Exclusive savegame version upper bound. SL_MAX_VERSION if no upper bound.

Returns
  Active savegame version falls within the given range.

Definition at line 1057 of file saveload.h.

References SAVEGAME_VERSION.

Referenced by CmdChangeSetting(), GetSaveLoadFromSettingTable(), GetSettingFromName(), IniLoadSettings(), IniSaveSettings(), and LoadSettings().

## ◆ SlIterateArray()

int SlIterateArray | ( |  | ) |

Iterate through the elements of an array and read the whole thing.

Returns
  The index of the object, or -1 if we have reached the end of current block

Definition at line 671 of file saveload.cpp.

Referenced by NewGRFMappingChunkHandler::Load(), PSACChunkHandler::Load(), SIGNChunkHandler::Load(), CHTSChunkHandler::Load(), CMDLChunkHandler::Load(), CMPUChunkHandler::Load(), CAPAChunkHandler::Load(), NAMEChunkHandler::Load(), IBLDChunkHandler::Load(), ITBLChunkHandler::Load(), LGRPChunkHandler::Load(), LGRJChunkHandler::Load(), LGRSChunkHandler::Load(), LoadSettings(), and SlSkipArray().

## ◆ SlObject()

void SlObject | ( | void * | object,
|  | const SaveLoadTable & | slt
| ) |  |

Main SaveLoad function.

Parameters

  object | The object that is being saved or loaded.
  slt | The SaveLoad table with objects to save/load.

Definition at line 1839 of file saveload.cpp.

References _sl, SaveLoadParams::need_length, NL_CALCLENGTH, NL_NONE, SlCalcObjLength(), and SlSetLength().

Referenced by OBJSChunkHandler::FixPointers(), ERNWChunkHandler::FixPointers(), DEPTChunkHandler::FixPointers(), INDYChunkHandler::FixPointers(), CAPYChunkHandler::FixPointers(), ORDRChunkHandler::FixPointers(), CHKPChunkHandler::FixPointers(), ORDLChunkHandler::FixPointers(), BKORChunkHandler::FixPointers(), CITYChunkHandler::FixPointers(), LGRSChunkHandler::FixPointers(), STNSChunkHandler::FixPointers(), PLYRChunkHandler::FixPointers(), STNNChunkHandler::FixPointers(), ROADChunkHandler::FixPointers(), VEHSChunkHandler::FixPointers(), NewGRFMappingChunkHandler::Load(), PSACChunkHandler::Load(), SIGNChunkHandler::Load(), CHTSChunkHandler::Load(), CMDLChunkHandler::Load(), CMPUChunkHandler::Load(), CAPAChunkHandler::Load(), ScriptInstance::Load(), ITBLChunkHandler::Load(), LGRPChunkHandler::Load(), LGRJChunkHandler::Load(), LGRSChunkHandler::Load(), ScriptInstance::LoadEmpty(), ScriptInstance::LoadObjects(), LoadSettings(), ScriptInstance::Save(), ScriptInstance::SaveEmpty(), ScriptInstance::SaveObject(), and SlGlobList().

## ◆ SlReadByte()

byte SlReadByte | ( |  | ) |

Wrapper for reading a byte from the buffer.

Returns
  The read byte.

Definition at line 425 of file saveload.cpp.

References _sl, and SaveLoadParams::reader.

Referenced by SlCopyBytes(), SlLoadCheckChunk(), SlLoadChunk(), SlReadSimpleGamma(), and SlSkipBytes().

## ◆ SlSetLength()

void SlSetLength | ( | size_t | length | ) |

Sets the length of either a RIFF object or the number of items in an array.

This lets us load an object or an array of arbitrary size

Parameters

  length | The length of the sought object/array

Definition at line 724 of file saveload.cpp.

References _sl, SaveLoadParams::action, SaveLoadParams::block_mode, SaveLoadParams::need_length, NL_NONE, NL_WANTLENGTH, and SLA_SAVE.

Referenced by MAPTChunkHandler::Save(), MAPHChunkHandler::Save(), MAPOChunkHandler::Save(), MAP2ChunkHandler::Save(), M3LOChunkHandler::Save(), M3HIChunkHandler::Save(), MAP5ChunkHandler::Save(), MAPEChunkHandler::Save(), MAP7ChunkHandler::Save(), MAP8ChunkHandler::Save(), SlCopy(), SlObject(), SlRefList(), and SlSetStructListLength().

## ◆ SlSetStructListLength()

void SlSetStructListLength | ( | size_t | length | ) |

Set the length of this list.

Parameters

  The | length of the list.

Definition at line 1810 of file saveload.cpp.

References _sl, SaveLoadParams::need_length, NL_NONE, and SlSetLength().

## ◆ SlSkipBytes()

static void SlSkipBytes | ( | size_t | length | ) |
| inlinestatic

Read in bytes from the file/data structure but don't do anything with them, discarding them in effect.

Parameters

  length | The amount of bytes that is being treated this way

Definition at line 1147 of file saveload.h.

References SlReadByte().

Referenced by SlCopyInternal(), and SlSkipArray().

## ◆ SlTableHeader()

std::vector<SaveLoad> SlTableHeader | ( | const SaveLoadTable & | slt | ) |

Save or Load a table header.

Note
  a table-header can never contain more than 65535 fields.

Parameters

  slt | The SaveLoad table with objects to save/load.

Returns
  When loading, the ordered SaveLoad array to use; otherwise an empty list.

Definition at line 1892 of file saveload.cpp.

References _sl, and SaveLoadParams::block_mode.

Referenced by LEAEChunkHandler::Load(), LEATChunkHandler::Load(), NewGRFMappingChunkHandler::Save(), ANITChunkHandler::Save(), GOALChunkHandler::Save(), LEAEChunkHandler::Save(), ERNWChunkHandler::Save(), MAPSChunkHandler::Save(), GRPSChunkHandler::Save(), OBJSChunkHandler::Save(), DEPTChunkHandler::Save(), SUBSChunkHandler::Save(), SIGNChunkHandler::Save(), CHTSChunkHandler::Save(), PSACChunkHandler::Save(), STPEChunkHandler::Save(), CMDLChunkHandler::Save(), LEATChunkHandler::Save(), ECMYChunkHandler::Save(), NGRFChunkHandler::Save(), INDYChunkHandler::Save(), STPAChunkHandler::Save(), ENGNChunkHandler::Save(), CMPUChunkHandler::Save(), CAPYChunkHandler::Save(), DATEChunkHandler::Save(), RAILChunkHandler::Save(), CAPAChunkHandler::Save(), GSDTChunkHandler::Save(), AIPLChunkHandler::Save(), IBLDChunkHandler::Save(), VIEWChunkHandler::Save(), ITBLChunkHandler::Save(), GSTRChunkHandler::Save(), EIDSChunkHandler::Save(), LGRPChunkHandler::Save(), LGRJChunkHandler::Save(), CITYChunkHandler::Save(), LGRSChunkHandler::Save(), GLOGChunkHandler::Save(), PLYRChunkHandler::Save(), STNNChunkHandler::Save(), ROADChunkHandler::Save(), VEHSChunkHandler::Save(), and SaveSettings().

## ◆ SlWriteByte()

void SlWriteByte | ( | byte | b | ) |

Wrapper for writing a byte to the dumper.

Parameters

  b | The byte to write.

Definition at line 434 of file saveload.cpp.

References _sl, SaveLoadParams::dumper, and MemoryDumper::WriteByte().

Referenced by SlCopyBytes().

## ◆ WriteValue()

void WriteValue | ( | void * | ptr,
|  | VarType | conv,
|  | int64 | val
| ) |  |

Write the value of a setting.

Parameters

  ptr | pointer to the variable
  conv | type of variable, can be a non-clean type, eg with other flags. It is parsed upon read
  val | the new value being given to the variable

Definition at line 829 of file saveload.cpp.

References GetVarMemType().

Referenced by IntSettingDesc::Write().