private:
const Path &path;
- std::string::size_type start,end;
+ std::string::size_type start, end;
Iterator(const Path &);
public:
- Iterator &operator++();
- Iterator &operator--();
+ Iterator &operator++();
+ Iterator &operator--();
std::string operator*() const;
- bool operator==(const Iterator &i) const { return (start==i.start && end==i.end); }
- bool operator!=(const Iterator &i) const { return !(*this==i); }
+ bool operator==(const Iterator &i) const { return (start==i.start && end==i.end); }
+ bool operator!=(const Iterator &i) const { return !(*this==i); }
};
private:
Path();
Path(const std::string &);
Path(const char *);
+private:
+ void init(const std::string &);
+public:
const std::string &str() const { return path; }
/// Returns the number of components in the path.
- unsigned size() const;
+ unsigned size() const;
- bool empty() const { return path.empty(); }
+ bool empty() const { return path.empty(); }
/// Determines whether the path starts from the root directory
bool is_absolute() const;
Path operator/(const Path &p) const;
Path &operator/=(const Path &);
- /**
- Extracts a single component from the path. Negative indices count from the
- end of the path.
- */
- std::string operator[](int) const;
-
- bool operator==(const Path &) const;
- Iterator begin() const;
- Iterator end() const;
private:
- void init(const std::string &);
+ /** Adds a component to the path. It must not contain the directory
+ separator character. */
void add_component(const std::string &);
+
+public:
+ /** Extracts a single component from the path. Negative indices count from
+ the end of the path. */
+ std::string operator[](int) const;
+
+ bool operator==(const Path &) const;
+ bool operator<(const Path &) const;
+ bool operator>(const Path &) const;
+ bool operator<=(const Path &other) const { return !(*this>other); }
+ bool operator>=(const Path &other) const { return !(*this<other); }
+ bool operator!=(const Path &other) const { return !(*this==other); }
+
+ Iterator begin() const;
+ Iterator end() const;
};
inline std::ostream &operator<<(std::ostream &o, const Path &p) { o<<p.str(); return o; }