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