]> git.tdb.fi Git - libs/datafile.git/commitdiff
Return the object from DynamicObjectLoader::store_object
authorMikko Rasa <tdb@tdb.fi>
Wed, 6 Oct 2021 20:27:34 +0000 (23:27 +0300)
committerMikko Rasa <tdb@tdb.fi>
Wed, 6 Oct 2021 20:27:34 +0000 (23:27 +0300)
This provides an easy way to both store the object and also use it.

source/dynamicobjectloader.h

index b5830b8c9512a9a95840a6bf57c08f87f25b62ba..726d19c073ed864601323d078aa7f79a46f94d90 100644 (file)
@@ -48,7 +48,7 @@ private:
 
 public:
        T *get_object() { T *o = object; object = 0; return o; }
-       void store_object(Collection &, const std::string &);
+       T *store_object(Collection &, const std::string &);
 
 private:
        void type(const Symbol &);
@@ -83,13 +83,15 @@ void DynamicObjectLoader<T, C>::init_actions()
 }
 
 template<typename T, typename C>
-void DynamicObjectLoader<T, C>::store_object(Collection &c, const std::string &name)
+T *DynamicObjectLoader<T, C>::store_object(Collection &c, const std::string &name)
 {
        if(!store_func)
                throw std::logic_error("no store function");
 
+       T *o = object;
        store_func(c, name, object);
        object = 0;
+       return o;
 }
 
 template<typename T, typename C>