00001 #ifndef __PathResolver_h__ 00002 #define __PathResolver_h__ 00003 00004 #include <string> 00005 00006 class PathResolver 00007 { 00008 public: 00009 typedef enum 00010 { 00011 Ok, 00012 EnvironmentVariableUndefined, 00013 UnknownDirectory 00014 } SearchPathStatus; 00015 00016 typedef enum 00017 { 00018 LocalSearch, 00019 RecursiveSearch 00020 } SearchType; 00021 00031 static std::string find_file (const std::string& logical_file_name, 00032 const std::string& search_path, 00033 SearchType search_type = LocalSearch); 00034 00044 static std::string find_file_from_list (const std::string& logical_file_name, 00045 const std::string& search_list, 00046 SearchType search_type = LocalSearch); 00047 00057 static std::string find_directory (const std::string& logical_file_name, 00058 const std::string& search_path, 00059 SearchType search_type = LocalSearch); 00060 00070 static std::string find_directory_from_list (const std::string& logical_file_name, 00071 const std::string& search_list, 00072 SearchType search_type = LocalSearch); 00073 00081 static SearchPathStatus check_search_path (const std::string& search_path); 00082 }; 00083 00084 extern "C" 00085 { 00086 PathResolver::SearchPathStatus PathResolverCheckSearchPath (const std::string& search_path); 00087 std::string PathResolverFindDirectory (const std::string& logical_file_name, 00088 const std::string& search_path); 00089 std::string PathResolverFindDirectoryFromList (const std::string& logical_file_name, 00090 const std::string& search_list); 00091 std::string PathResolverFindFile (const std::string& logical_file_name, 00092 const std::string& search_path); 00093 std::string PathResolverFindFileFromList (const std::string& logical_file_name, 00094 const std::string& search_list); 00095 std::string PathResolverFindXMLFile (const std::string& logical_file_name); 00096 std::string PathResolverFindDataFile (const std::string& logical_file_name); 00097 } 00098 00099 #endif