1 #ifndef MSP_PATH_PATH_H_
2 #define MSP_PATH_PATH_H_
25 iterator &operator++();
26 iterator &operator--();
27 std::string operator*() const;
28 bool operator==(const iterator &i) const { return (start==i.start && end==i.end); }
29 bool operator!=(const iterator &i) const { return !(*this==i); }
34 iterator(const Path &);
40 Path(const std::string &p) { init(p); }
41 Path(const char *p) { init(p); }
42 const std::string &str() const { return path; }
43 unsigned size() const;
44 bool is_absolute() const;
45 Path subpath(unsigned, unsigned =(unsigned)-1) const;
46 Path operator/(const Path &p) const { Path a=*this; a/=p; return a; }
47 Path &operator/=(const Path &);
48 std::string operator[](int) const;
49 bool operator==(const Path &) const;
50 iterator begin() const { return iterator(*this); }
51 iterator end() const { iterator i(*this); i.start=i.end=std::string::npos; return i; }
55 void init(const std::string &);
58 inline std::ostream &operator<<(std::ostream &o, const Path &p) { o<<p.str(); return o; }