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;
}
/**
{
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;