FileRepository.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef SOFA_HELPER_SYSTEM_FILEREPOSITORY_H
00028 #define SOFA_HELPER_SYSTEM_FILEREPOSITORY_H
00029
00030 #include <string>
00031 #include <vector>
00032
00033 namespace sofa
00034 {
00035
00036 namespace helper
00037 {
00038
00039 namespace system
00040 {
00041
00056
00057 class FileRepository
00058 {
00059 public:
00060
00062 FileRepository(const char* envVar = "SOFA_DATA_PATH", const char* relativePath = "../share" );
00063
00064 ~FileRepository();
00065
00067 void addFirstPath(const std::string& path);
00068
00070 void addLastPath(const std::string& path);
00071
00073 std::string getFirstPath();
00074
00079 bool findFile(std::string& filename, const std::string& basedir="");
00080
00083 std::string getFile(std::string filename, const std::string& basedir="")
00084 {
00085 findFile(filename, basedir);
00086 return filename;
00087 }
00088
00093 bool findFileFromFile(std::string& filename, const std::string& basefile);
00094
00096 void print();
00097
00099 static char entrySeparator()
00100 {
00101 #ifdef WIN32
00102 return ';';
00103 #else
00104 return ':';
00105 #endif
00106 }
00107
00108 protected:
00109
00111 std::vector<std::string> vpath;
00112
00114 static bool findFileIn(std::string& filename, const std::string& path);
00115 };
00116
00117 extern FileRepository DataRepository;
00118
00119 }
00120
00121 }
00122
00123 }
00124
00125 #endif