X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobjectloader.h;h=e383109f791937739c7e80e5e3d10486bc1641ff;hb=d93f320a4853afa6d1c25d9b546600807cfee37d;hp=4dcb981864e7c2d924a61dcbd44e552dfffa6cb0;hpb=2f1bd0bcbdf17a7f1015f4fdf0e4ad8c97eb1966;p=libs%2Fdatafile.git diff --git a/source/objectloader.h b/source/objectloader.h index 4dcb981..e383109 100644 --- a/source/objectloader.h +++ b/source/objectloader.h @@ -1,18 +1,12 @@ #ifndef MSP_DATAFILE_OBJECTLOADER_H_ #define MSP_DATAFILE_OBJECTLOADER_H_ -#include +#include "except.h" #include "loader.h" namespace Msp { namespace DataFile { -class no_collection: public std::runtime_error -{ -public: - no_collection(const std::type_info &); -}; - class Collection; /** @@ -20,7 +14,7 @@ Provides the basic functionality of an object loader. Deriving from this allows loading values directly into member variables of the objects. */ template -class ObjectLoader: public Loader +class ObjectLoader: virtual public Loader { public: typedef O Object; @@ -50,6 +44,9 @@ protected: DerivedObjectLoader(O &o): B(o), obj(o) { } + template + DerivedObjectLoader(O &o, T &a): B(o, a), obj(o) { } + public: O &get_object() const { return obj; } };