+public:
+ class GenericLoader: public DataFile::Loader
+ {
+ private:
+ template<typename T>
+ struct CreateScene
+ {
+ void operator()(const std::string &, GenericLoader &) const;
+ };
+
+ DataFile::Collection &coll;
+ Scene *scene;
+ Loader *scene_loader;
+
+ static ActionMap shared_actions;
+
+ public:
+ GenericLoader(DataFile::Collection &);
+ ~GenericLoader();
+
+ Scene *get_scene() { Scene *s = scene; scene = 0; return s; }
+ private:
+ virtual void init_actions();
+
+ void type(const DataFile::Symbol &);
+
+ friend class Scene;
+ };
+
+private:
+ typedef TypeRegistry<GenericLoader::CreateScene, GenericLoader &> SceneRegistry;
+