]> git.tdb.fi Git - libs/datafile.git/commitdiff
Add DerivedObjectLoader class
authorMikko Rasa <tdb@tdb.fi>
Tue, 10 Jul 2012 15:28:11 +0000 (18:28 +0300)
committerMikko Rasa <tdb@tdb.fi>
Tue, 10 Jul 2012 15:28:11 +0000 (18:28 +0300)
source/objectloader.h

index f1cb6ffe051c5f8405fa652a67d36b3001dee380..5928714215cd056297cab8fd79e1f9647fe648e2 100644 (file)
@@ -35,6 +35,26 @@ public:
 };
 
 
+/**
+Convenience class for loading derived objects.  Inherits from the base class
+loader and shadows its members with ones for the derived type.
+*/
+template<typename O, typename B>
+class DerivedObjectLoader: public B::Loader
+{
+public:
+       typedef O Object;
+
+protected:
+       O &obj;
+
+       DerivedObjectLoader(O &o): B::Loader(o), obj(o) { }
+
+public:
+       O &get_object() const { return obj; }
+};
+
+
 /**
 Provides functionality for loading objects with a Collection.  Deriving from
 this allows loading pointers to objects in the collection automatically.