From 469bbcf0701e1eb8a6670c23145b0da87357e178 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Sun, 25 Mar 2012 20:00:08 +0000 Subject: Code is all reorganized. We're about ready to release. I should write up a little explenation of the arrangement. --- src/stable/archival.h | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/stable/archival.h (limited to 'src/stable/archival.h') diff --git a/src/stable/archival.h b/src/stable/archival.h new file mode 100644 index 0000000..946167a --- /dev/null +++ b/src/stable/archival.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2007-2011 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#ifndef BU_ARCHIVAL_H +#define BU_ARCHIVAL_H + +#include "bu/archivebase.h" + +namespace Bu +{ + /** + * The base class for any class you want to archive. Simply include this as + * a base class, implement the purely virtual archive function and you've + * got an easily archiveable class. + * + * Archival: "of or pertaining to archives or valuable records; contained + * in or comprising such archives or records." + */ + class Archival + { + public: + /** + * Does nothing, here for completeness. + */ + Archival(); + + /** + * Here to ensure the deconstructor is virtual. + */ + virtual ~Archival(); + + /** + * This is the main workhorse of the archive system, just override and + * you've got a archiveable class. A reference to the Archive + * used is passed in as your only parameter, query it to discover if + * you are loading or saving. + * @param ar A reference to the Archive object to use. + */ + virtual void archive( class ArchiveBase &ar )=0; + }; + + ArchiveBase &operator<<(ArchiveBase &, const class Bu::Archival &); + ArchiveBase &operator<<(ArchiveBase &, class Bu::Archival &); + ArchiveBase &operator>>(ArchiveBase &, class Bu::Archival &); + +} + +#endif -- cgit v1.2.3