]> git.tdb.fi Git - libs/datafile.git/commitdiff
Bugfixes
authorMikko Rasa <tdb@tdb.fi>
Fri, 2 Nov 2007 20:14:36 +0000 (20:14 +0000)
committerMikko Rasa <tdb@tdb.fi>
Fri, 2 Nov 2007 20:14:36 +0000 (20:14 +0000)
source/collection.h
source/loader.h

index 24be69dd2f70cd07d425453b3121788b2ff60086..5fcaab34f35345406de07e372a70cb972efc2a67 100644 (file)
@@ -110,7 +110,7 @@ private:
                        ItemCreatorBridge<S> *creator=dynamic_cast<ItemCreatorBridge<S> *>(this);
                        if(creator)
                        {
-                               creator->create(coll, name, ptr);
+                               ptr=creator->create(coll, name);
                                return true;
                        }
                        return false;
@@ -120,7 +120,7 @@ private:
        template<typename S>
        struct ItemCreatorBridge: public ItemCreatorBase
        {
-               virtual bool create(Collection &, const std::string &, S *&) const =0;
+               virtual S *create(Collection &, const std::string &) const =0;
        };
 
        template<typename T, typename S, typename C>
@@ -213,7 +213,7 @@ public:
                if(!item)
                        throw TypeError("Item '"+name+"' is not of correct type");
 
-               return *item->data;
+               return item->data;
        }
 
        /**
@@ -236,7 +236,7 @@ public:
                                {
                                        // We already know that the item didn't exist yet
                                        items[name]=new Item<NCT>(d);
-                                       return *d;
+                                       return d;
                                }
                        }
                        throw KeyError("Item '"+name+"' not found in collection");
@@ -246,7 +246,7 @@ public:
                if(!item)
                        throw TypeError("Item '"+name+"' is not of correct type");
 
-               return *item->data;
+               return item->data;
        }
 
        /**
index acc84fe024dd080d702bb4d4b3af52ce4ff19e12..951eeb0d2337f9ce2793fabe294a674c915ac34e 100644 (file)
@@ -196,7 +196,7 @@ public:
        {
                if(st.args.size()!=1) throw TypeError(st.get_location()+": Wrong number of arguments");
                typename L::Loader &ldr=dynamic_cast<typename L::Loader &>(l);
-               ldr.get_object().*ptr0=&ldr.get_collection().template get<T0>(st.args[0].get<std::string>());
+               ldr.get_object().*ptr0=ldr.get_collection().template get<T0>(st.args[0].get<std::string>());
        }
 private:
        Pointer0Type ptr0;