saveload.h
changeset 817 4f9377b7fd2b
parent 557 8540788a827e
child 938 4f84a0530758
--- a/saveload.h	Tue Dec 28 09:55:55 2004 +0000
+++ b/saveload.h	Tue Dec 28 11:51:31 2004 +0000
@@ -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 @@
 	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,