- protected:
- StoreBase() { }
- public:
- virtual ~StoreBase() { }
-
- virtual void store(Collection &, const std::string &, T *) = 0;
- virtual Variant create_future() const = 0;
-
- virtual void add_to_loader(Collection::Loader &, const std::string &) = 0;
- };
-
- template<typename S>
- class Store: public StoreBase
- {
- public:
- virtual void store(Collection &coll, const std::string &name, T *obj)
- { coll.add(name, static_cast<S *>(obj)); }
-
- virtual Variant create_future() const
- { return RefPtr<S>(0); }
-
- virtual void add_to_loader(Collection::Loader &loader, const std::string &kwd)
- { loader.add(kwd, &Collection::Loader::item<T, S>); }