objwriter.h

changeset 37
c349dca807f9
parent 36
a8838b5f1213
child 38
e4bbd540663b
--- a/objwriter.h	Sun Jul 29 04:02:07 2012 +0300
+++ b/objwriter.h	Sun Jul 29 16:55:32 2012 +0300
@@ -72,17 +72,29 @@
 	void WriteBuffers ();
 	void WriteStringTable ();
 	void WriteToFile ();
+	DataBuffer* GetCurrentBuffer ();
+	
+	unsigned int AddMark (int type, str name);
+	unsigned int FindMark (int type, str name);
+	unsigned int AddReference (unsigned int mark);
 	
 	template <class T> void Write (T stuff) {
-		DataBuffer* buffer =	(g_CurMode == MODE_MAINLOOP) ? MainLoopBuffer :
-					(g_CurMode == MODE_ONENTER) ? OnEnterBuffer :
-					MainBuffer;
+		DataBuffer* buffer = GetCurrentBuffer ();
 		buffer->Write<T> (stuff);
 		return;
 	}
 	
 	// Cannot use default arguments in function templates..
 	void Write (word stuff) {Write<word> (stuff);}
+	
+	template <class T> void WriteDataToFile (T stuff) {
+		// One byte at a time
+		for (unsigned int x = 0; x < sizeof (T); x++) {
+			unsigned char c = GetByteIndex<T> (stuff, x);
+			fwrite (&c, 1, 1, fp);
+			numWrittenBytes++;
+		}
+	}
 };
 
 #endif // __OBJWRITER_H__
\ No newline at end of file

mercurial