diff options
Diffstat (limited to 'saveload.h')
-rw-r--r-- | saveload.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/saveload.h b/saveload.h index 4bacf895e..d9ba00765 100644 --- a/saveload.h +++ b/saveload.h @@ -1,6 +1,8 @@ #ifndef SAVELOAD_H #define SAVELOAD_H +#include <setjmp.h> + typedef void ChunkSaveLoadProc(); typedef void AutolengthProc(void *arg); @@ -23,6 +25,49 @@ typedef struct { byte null; } NullStruct; +typedef void WriterProc(uint len); +typedef uint ReaderProc(); + +typedef uint ReferenceToIntProc(void *v, uint t); +typedef void *IntToReferenceProc(uint r, uint t); + +typedef struct { + bool save; + byte need_length; + byte block_mode; + bool error; + byte version; + + int obj_len; + int array_index, last_array_index; + + uint32 offs_base; + + WriterProc *write_bytes; + ReaderProc *read_bytes; + + ReferenceToIntProc *ref_to_int_proc; + IntToReferenceProc *int_to_ref_proc; + + const ChunkHandler * const * chs; + const byte * const *includes; + + byte *bufp, *bufe; + + int tmp; + + // these 3 may be used by compressor/decompressors. + byte *buf; // pointer and size to read/write, initialized by init + uint bufsize; + FILE *fh; + + void (*excpt_uninit)(); + const char *excpt_msg; + jmp_buf excpt; // used to jump to "exception handler" +} SaverLoader; + +extern SaverLoader _sl; + enum { REF_SCHEDULE = 0, REF_VEHICLE = 1, |