1 #ifndef RESOURCELOADER_H 2 #define RESOURCELOADER_H 3 4 #include "stringImproved.h" 5 #include "P.h" 6 7 class ResourceStream : public virtual PObject, public sf::InputStream 8 { 9 public: ~ResourceStream()10 virtual ~ResourceStream() {} 11 12 string readLine(); 13 }; 14 15 class ResourceProvider : public virtual PObject 16 { 17 protected: 18 bool searchMatch(const string name, const string searchPattern); 19 public: 20 ResourceProvider(); 21 22 virtual P<ResourceStream> getResourceStream(const string filename) = 0; 23 virtual std::vector<string> findResources(const string searchPattern) = 0; 24 }; 25 26 class DirectoryResourceProvider : public ResourceProvider 27 { 28 string basepath; 29 public: 30 DirectoryResourceProvider(const string basepath); 31 32 virtual P<ResourceStream> getResourceStream(const string filename); 33 virtual std::vector<string> findResources(const string searchPattern); 34 private: 35 void findResources(std::vector<string>& paths, const string basepath, const string searchPattern); 36 }; 37 38 P<ResourceStream> getResourceStream(const string filename); 39 std::vector<string> findResources(const string searchPattern); 40 41 #endif//RESOURCELOADER_H 42