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
00105 bool
00106 isset() const;
00107
00113 const bool
00114 isUrl() const;
00115
00121 void
00122 addComponent(const char * component);
00123
00129 void
00130 addComponent(const std::string & component);
00131
00138 void
00139 split(std::string & dirpath, std::string & basename) const;
00140
00149 void
00150 split(std::string & dir, std::string & filename, std::string & ext) const;
00151
00157 std::string
00158 basename() const;
00159
00165 std::string
00166 dirpath() const;
00167
00174 std::string
00175 substr(const size_t index) const;
00176
00182 std::string
00183 unescape() const;
00184
00188 static Path
00189 getTempDir();
00190
00192 size_t
00193 length() const;
00194
00196 std::string
00197 native() const;
00198 };
00199
00200 typedef std::vector<Path> PathVector;
00201
00202 extern const PathVector EmptyPathVector;
00203 }
00204
00205 #endif
00206
00207
00208
00209
00210