summaryrefslogtreecommitdiff
path: root/saveload.h
diff options
context:
space:
mode:
Diffstat (limited to 'saveload.h')
-rw-r--r--saveload.h45
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,