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 
00028 
#ifndef UFILEARCHIVE_HPP
00029 
#define UFILEARCHIVE_HPP
00030 
00031 
#include "../uobject.hpp"
00032 
00033 
#include <vector>
00034 
#include <fstream>
00035 
00036 
namespace ufo {
00037 
00048 class UFO_EXPORT UFileArchive : 
public UObject  {
00049     UFO_DECLARE_DYNAMIC_CLASS(UFileArchive)
00050 
public: 
00055     
static bool exists(
const std::string & fileName);
00059     
static std::vector<std::string> readDir(
const std::string & path);
00060 
00068     
static std::string dirName(
const std::string & path);
00069 
00073     
static bool isDirectory(
const std::string & path);
00074 
00075     
static UFileArchive * getDefault();
00076     
static void setDefault(UFileArchive * archive);
00077 
00078 
public: 
00080     UFileArchive();
00082     UFileArchive(
const std::string & searchPath);
00083 
00084 
public: 
00086     
void addArchive(
const std::string & arc);
00088     
bool removeArchive(
const std::string & arc);
00090     
void removeAllArchives();
00091 
00093     
void addSearchPath(
const std::string & searchPath);
00098     std::string getSearchPath() 
const;
00102     std::vector<std::string> getSearchPathAsVector() 
const;
00103 
00108     
bool existsInArchive(
const std::string & fileName);
00109 
00114     std::string getAbsolutePath(
const std::string & fileName) 
const;
00115 
00116 
private: 
00117     
static UFileArchive * createInstance();
00118 
00119 
private: 
00120     
static UFileArchive * sm_instance;
00121 
00122 
private: 
00123     std::vector<std::string> m_archives;
00124 };
00125 
00126 
inline UFileArchive *
00127 UFileArchive::getDefault() {
00128     
if (!sm_instance) {
00129         sm_instance = createInstance();
00130     }
00131     
return sm_instance;
00132 }
00133 
00134 
inline void
00135 UFileArchive::setDefault(UFileArchive * instance) {
00136     
if (instance) {
00137         sm_instance = instance;
00138     }
00139 }
00140 
00141 } 
00142 
00143 
#endif // UFILEARCHIVE_HPP