From 2b3728af37979d8aa7c0c5322131f7e264863a08 Mon Sep 17 00:00:00 2001 From: Eric Frias Date: Fri, 20 Jun 2014 10:38:21 -0400 Subject: [PATCH] Add -> for directory_iterator --- include/fc/filesystem.hpp | 19 +++++++++++++++++++ src/filesystem.cpp | 1 + 2 files changed, 20 insertions(+) diff --git a/include/fc/filesystem.hpp b/include/fc/filesystem.hpp index d1a9c31..d67cdd8 100644 --- a/include/fc/filesystem.hpp +++ b/include/fc/filesystem.hpp @@ -85,6 +85,24 @@ namespace fc { #endif }; + namespace detail + { + class path_wrapper + { + public: + path_wrapper(path p) : + _path(p) + { + } + const path* operator->() const + { + return &_path; + } + private: + path _path; + }; + } + class directory_iterator { public: directory_iterator( const fc::path& p ); @@ -92,6 +110,7 @@ namespace fc { ~directory_iterator(); fc::path operator*()const; + detail::path_wrapper operator->() const; directory_iterator& operator++(int); directory_iterator& operator++(); diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 1c746ae..2dd961a 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -158,6 +158,7 @@ namespace fc { directory_iterator::~directory_iterator(){} fc::path directory_iterator::operator*()const { return boost::filesystem::path(*(*_p)); } + detail::path_wrapper directory_iterator::operator->() const { return detail::path_wrapper(boost::filesystem::path(*(*_p))); } directory_iterator& directory_iterator::operator++(int) { (*_p)++; return *this; } directory_iterator& directory_iterator::operator++() { (*_p)++; return *this; }