diff orange/serialization/archives/Archive.d @ 0:f7b078e85f7f

First commit
author Jacob Carlborg <doob@me.com>
date Wed, 26 May 2010 17:19:13 +0200
parents
children 99c52d46822a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/orange/serialization/archives/Archive.d	Wed May 26 17:19:13 2010 +0200
@@ -0,0 +1,46 @@
+/**
+ * Copyright: Copyright (c) 2010 Jacob Carlborg.
+ * Authors: Jacob Carlborg
+ * Version: Initial created: Feb 6, 2010
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
+ */
+module orange.serialization.archives.Archive;
+
+version (Tango)
+	import tango.util.Convert;
+
+import orange.serialization.archives.ArchiveException;
+
+interface IArchive
+{
+	void beginArchiving ();
+	void reset ();
+}
+
+abstract class Archive (U) : IArchive
+{
+	alias U[] DataType;
+	
+	abstract void beginArchiving ();
+	abstract void beginUnarchiving (DataType data);
+	abstract DataType data ();
+	abstract void reset ();
+	
+	protected DataType toDataType (T) (T value)
+	{
+		try
+			return to!(DataType)(value);
+		
+		catch (ConversionException e)
+			throw new ArchiveException(e);
+	}
+	
+	protected T fromDataType (T) (DataType value)
+	{
+		try
+			return to!(T)(value);
+		
+		catch (ConversionException e)
+			throw new ArchiveException(e);
+	}
+}
\ No newline at end of file