X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdynamicobjectloader.h;h=551a0a63dd1f454cbc691cbe53ebf96b620f23f1;hb=f2f933f53cd729ca034e054085b96107f64f3928;hp=726d19c073ed864601323d078aa7f79a46f94d90;hpb=fafae9081dc6cf6fe8fbc39cbca53708e83813ab;p=libs%2Fdatafile.git diff --git a/source/dynamicobjectloader.h b/source/dynamicobjectloader.h index 726d19c..551a0a6 100644 --- a/source/dynamicobjectloader.h +++ b/source/dynamicobjectloader.h @@ -31,8 +31,8 @@ protected: typedef Msp::TypeRegistry TypeRegistry; Collection *coll; -private: T *object; +private: Loader *obj_loader; std::function store_func; @@ -50,9 +50,10 @@ public: T *get_object() { T *o = object; object = 0; return o; } T *store_object(Collection &, const std::string &); -private: - void type(const Symbol &); +protected: + virtual void type(const Symbol &); +private: template typename std::enable_if::value, typename U::Loader *>::type create_object_loader(U &obj) const; @@ -128,7 +129,7 @@ void DynamicObjectLoader::CreateObject::operator()(const std::string &, ldr.object = obj; ldr.obj_loader = ldr.create_object_loader(*obj); ldr.add_auxiliary_loader(*ldr.obj_loader); - ldr.store_func = [&ldr](Collection &c, const std::string &n, T *o){ c.add(n, static_cast(o)); }; + ldr.store_func = [](Collection &c, const std::string &n, T *o){ c.add(n, static_cast(o)); }; } } // namespace DataFile