ItemCreatorBridge<S> *creator=dynamic_cast<ItemCreatorBridge<S> *>(this);
if(creator)
{
- creator->create(coll, name, ptr);
+ ptr=creator->create(coll, name);
return true;
}
return false;
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>
if(!item)
throw TypeError("Item '"+name+"' is not of correct type");
- return *item->data;
+ return item->data;
}
/**
{
// 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");
if(!item)
throw TypeError("Item '"+name+"' is not of correct type");
- return *item->data;
+ return item->data;
}
/**