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 #ifndef _SVNCPP_PATH_HPP_
00026 #define _SVNCPP_PATH_HPP_
00027
00028
00029 #include "svncpp/string_wrapper.hpp"
00030 #include "svncpp/vector_wrapper.hpp"
00031
00032 namespace svn
00033 {
00037 class Path
00038 {
00039 private:
00040 std::string m_path;
00041 bool m_pathIsUrl;
00042
00048 void init(const char * path);
00049
00050 public:
00058 Path(const std::string & path = "");
00059
00066 Path(const char * path);
00067
00073 Path(const Path & path);
00074
00078 Path& operator= (const Path&);
00079
00083 bool
00084 operator== (const Path&) const;
00085
00089 const std::string &
00090 path() const;
00091
00095 const char *
00096 c_str() const;
00097
00110 bool
00111 isSet() const;
00112
00118 bool
00119 isUrl() const;
00120
00126 void
00127 addComponent(const char * component);
00128
00134 void
00135 addComponent(const std::string & component);
00136
00143 void
00144 split(std::string & dirpath, std::string & basename) const;
00145
00154 void
00155 split(std::string & dir, std::string & filename, std::string & ext) const;
00156
00162 std::string
00163 basename() const;
00164
00170 std::string
00171 dirpath() const;
00172
00179 std::string
00180 substr(const size_t index) const;
00181
00187 std::string
00188 unescape() const;
00189
00193 static Path
00194 getTempDir();
00195
00197 size_t
00198 length() const;
00199
00201 std::string
00202 native() const;
00203 };
00204
00205 typedef std::vector<Path> PathVector;
00206
00207 extern const PathVector EmptyPathVector;
00208 }
00209
00210 #endif
00211
00212
00213
00214
00215