#pragma once #include #include class PathParser { public: static Result create(const char* path); PathParser(PathParser&& other); PathParser(const PathParser&) = delete; ~PathParser(); bool is_absolute() const { return *m_original == '/'; } Option next(); private: PathParser(const char* original, char* copy); const char* m_original { nullptr }; char* m_copy { nullptr }; bool m_already_called_next { false }; };