From 7c49f771048db99041e5544530282df07f4b0bae Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Fri, 29 Jul 2016 00:58:22 -0700 Subject: Support renaming files under an ldid::UnionFolder. --- ldid.hpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'ldid.hpp') diff --git a/ldid.hpp b/ldid.hpp index 40b1c8b..5b2efda 100644 --- a/ldid.hpp +++ b/ldid.hpp @@ -107,7 +107,13 @@ class UnionFolder : }; Folder &parent_; - std::map files_; + std::set deletes_; + + std::map remaps_; + std::map resets_; + + std::string Map(const std::string &path); + void Map(const std::string &path, const Functor &)> &)> &code, const std::string &file, const Functor &)> &save); public: UnionFolder(Folder &parent); @@ -116,8 +122,18 @@ class UnionFolder : virtual bool Open(const std::string &path, const Functor &code); virtual void Find(const std::string &path, const Functor &)> &)> &code); + void operator ()(const std::string &from) { + deletes_.insert(from); + } + + void operator ()(const std::string &from, const std::string &to) { + operator ()(from); + remaps_[to] = from; + } + std::stringbuf &operator [](const std::string &path) { - return files_[path]; + operator ()(path); + return resets_[path]; } }; -- cgit v1.2.3