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