irods  4.2.8
About: iRODS (the integrated Rule Oriented Data System) is a distributed data-management system for creating data grids, digital libraries, persistent archives, and real-time data systems.
  Fossies Dox: irods-4.2.8.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

path.hpp
Go to the documentation of this file.
1 #ifndef IRODS_FILESYSTEM_PATH_HPP
2 #define IRODS_FILESYSTEM_PATH_HPP
3 
5 
6 #include <string>
7 #include <utility>
8 #include <type_traits>
9 #include <istream>
10 #include <ostream>
11 
13 {
14  class path
15  {
16  public:
17  class iterator;
18  class reverse_iterator;
19 
20  // clang-format off
21  using value_type = char;
22  using string_type = std::basic_string<value_type>;
25  // clang-format on
26 
27  static constexpr value_type preferred_separator = '/';
28 
29  private:
30  // clang-format off
31  static constexpr const value_type* const dot = ".";
32  static constexpr const value_type* const dot_dot = "..";
33  // clang-format on
34 
35  public:
36  // Constructors and destructor
37 
38  path() = default;
39  path(const path& _p) = default;
40  path(path&& _p) noexcept = default;
41 
42  path(const value_type* _source)
43  : value_{_source}
44  {
45  }
46 
47  path(value_type* _source)
48  : value_{_source}
49  {
50  }
51 
52  path(string_type&& _source) noexcept
53  : value_{std::move(_source)}
54  {
55  }
56 
57  // Delegating constructor
58 
59  template <typename Source,
60  typename = std::enable_if_t<path_traits::is_pathable<Source>>>
61  path(const Source& _source)
62  : path{std::begin(_source), std::end(_source)}
63  {
64  }
65 
66  template <typename InputIterator,
67  typename ValueType = typename std::iterator_traits<InputIterator>::value_type,
69  path(InputIterator _begin, InputIterator _end)
70  : value_{_begin, _end}
71  {
72  }
73 
74  ~path() = default;
75 
76  // Assignments
77 
78  auto operator=(const path& _p) -> path& = default;
79  auto operator=(path&& _p) noexcept -> path& = default;
80 
81  auto operator=(const value_type* _p) -> path&
82  {
83  value_ = _p;
84  return *this;
85  }
86 
87  auto operator=(value_type* _p) -> path&
88  {
89  value_ = _p;
90  return *this;
91  }
92 
93  auto operator=(string_type&& _source) -> path&
94  {
95  value_ = std::move(_source);
96  return *this;
97  }
98 
99  template <typename Source,
100  typename = std::enable_if_t<path_traits::is_pathable<Source>>>
101  auto operator=(const Source& _source) -> path&
102  {
103  string_type new_path{std::begin(_source), std::end(_source)};
104  value_ = std::move(new_path);
105  return *this;
106  }
107 
108  auto assign(string_type&& _source) -> path&
109  {
110  return *this = std::move(_source);
111  }
112 
113  template <typename Source,
114  typename = std::enable_if_t<path_traits::is_pathable<Source>>>
115  auto assign(const Source& _source) -> path&
116  {
117  return *this = _source;
118  }
119 
120  template <typename InputIterator,
121  typename ValueType = typename std::iterator_traits<InputIterator>::value_type,
123  auto assign(InputIterator _begin, InputIterator _end) -> path&
124  {
125  return *this = string_type{_begin, _end};
126  }
127 
128  // Appends
129 
130  auto operator/=(const path& _p) -> path&;
131 
132  template <typename Source,
133  typename = std::enable_if_t<path_traits::is_pathable<Source>>>
134  auto operator/=(const Source& _source) -> path&
135  {
136  return *this /= path{_source};
137  }
138 
139  template <typename Source,
140  typename = std::enable_if_t<path_traits::is_pathable<Source>>>
141  auto append(const Source& _source) -> path&
142  {
143  return *this /= path{_source};
144  }
145 
146  template <typename InputIterator,
147  typename ValueType = typename std::iterator_traits<InputIterator>::value_type,
149  auto append(InputIterator _begin, InputIterator _end) -> path&
150  {
151  return *this /= path{_begin, _end};
152  }
153 
154  // Concatenation
155 
156  // clang-format off
157  auto operator+=(const path& _p) -> path& { value_ += _p.value_; return *this; }
158  auto operator+=(const string_type& _p) -> path& { value_ += _p; return *this; }
159  auto operator+=(const value_type* _p) -> path& { value_ += _p; return *this; }
160  auto operator+=(value_type _p) -> path& { value_ += _p; return *this; }
161  // clang-format on
162 
163  template <typename Source,
164  typename = std::enable_if_t<path_traits::is_pathable<Source>>>
165  auto operator+=(const Source& _p) -> path&
166  {
167  return *this += path{_p};
168  }
169 
170  // template <typename CharT>
171  // auto operator+=(CharT _p) -> path&;
172 
173  template <typename InputIterator,
174  typename ValueType = typename std::iterator_traits<InputIterator>::value_type,
176  auto concat(InputIterator _begin, InputIterator _end) -> path&
177  {
178  return *this += path{_begin, _end};
179  }
180 
181  // Modifiers
182 
183  auto clear() -> void { value_.clear(); }
184 
185  auto remove_object_name() -> path&;
186  auto replace_object_name(const path& _replacement = {}) -> path&;
187  auto replace_extension(const path& _replacement = {}) -> path&;
188 
189  auto swap(path& _rhs) -> void { value_.swap(_rhs.value_); }
190 
191  // Lexical operations
192 
193  auto lexically_normal() const -> path;
194  auto lexically_relative(const path& _base) const -> path;
195  auto lexically_proximate(const path& _base) const -> path;
196 
197  // Format observers
198 
199  // clang-format off
200  auto c_str() const noexcept -> const value_type* { return value_.c_str(); }
201  auto string() const -> string_type { return value_; }
202  operator string_type() const { return value_; }
203  // clang-format on
204 
205  // Compare
206 
207  auto compare(const path& _p) const noexcept -> int;
208 
209  // Decomposition
210 
211  auto root_collection() const -> path;
212  auto relative_path() const -> path;
213  auto parent_path() const -> path;
214  auto object_name() const -> path;
215  auto stem() const -> path;
216  auto extension() const -> path;
217 
218  // Query
219 
220  // clang-format off
221  auto empty() const -> bool { return value_.empty(); }
222  auto has_root_collection() const -> bool { return !root_collection().empty(); }
223  auto has_relative_path() const -> bool { return !relative_path().empty(); }
224  auto has_parent_path() const -> bool { return !parent_path().empty(); }
225  auto has_object_name() const -> bool { return !object_name().empty(); }
226  auto has_stem() const -> bool { return !stem().empty(); }
227  auto has_extension() const -> bool { return !extension().empty(); }
228  auto is_absolute() const -> bool { return !empty() && preferred_separator == value_.front(); }
229  auto is_relative() const -> bool { return !is_absolute(); }
230  // clang-format on
231 
232  // Iterators
233 
234  auto begin() const -> iterator;
235  auto end() const -> iterator;
236 
237  auto rbegin() const -> reverse_iterator;
238  auto rend() const -> reverse_iterator;
239 
240  private:
241  void append_separator_if_needed(const path& _p);
242 
244  }; // path
245 
246  class path::iterator
247  {
248  public:
249  // clang-format off
250  using value_type = const path;
251  using pointer = value_type*;
253  using difference_type = std::ptrdiff_t;
254  using iterator_category = std::bidirectional_iterator_tag;
255  // clang-format on
256 
257  iterator() = default;
258 
259  explicit iterator(const path& _p);
260 
261  iterator(const iterator& _other) = default;
262  auto operator=(const iterator& _other) -> iterator& = default;
263 
264  iterator(iterator&& _other) = default;
265  auto operator=(iterator&& _other) -> iterator& = default;
266 
267  ~iterator() = default;
268 
269  auto operator==(const iterator& _other) const noexcept -> bool
270  {
271  return _other.path_ptr_ == path_ptr_ && _other.pos_ == pos_;
272  }
273 
274  auto operator!=(const iterator& _other) const noexcept -> bool { return !(*this == _other); }
275 
276  // clang-format off
277  auto operator*() const -> reference { return element_; }
278  auto operator->() const -> pointer { return &element_; }
279  // clang-format on
280 
281  auto operator++() -> iterator&;
282  auto operator++(int) -> iterator { auto it = *this; ++(*this); return it; }
283 
284  auto operator--() -> iterator&;
285  auto operator--(int) -> iterator { auto it = *this; --(*this); return it; }
286 
287  private:
288  friend class path;
289 
292  path::string_type::size_type pos_;
293  }; // iterator
294 
296  {
297  public:
298  // clang-format off
304  // clang-format on
305 
306  reverse_iterator() = default;
307 
309  : it_{_it}
310  , element_{}
311  {
312  auto t = it_;
313  element_ = *--t;
314  }
315 
317  auto operator=(const reverse_iterator&) -> reverse_iterator& = default;
318 
321 
322  ~reverse_iterator() = default;
323 
324  // clang-format off
325  auto operator*() const -> reference { return element_; }
326  auto operator->() const -> pointer { return &element_; }
327 
328  auto operator==(const reverse_iterator& _rhs) const noexcept -> bool { return _rhs.it_ == it_; }
329  auto operator!=(const reverse_iterator& _rhs) const noexcept -> bool { return !(_rhs == *this); }
330  // clang-format on
331 
333  {
334  auto t = --it_;
335  element_ = *--t;
336  return *this;
337  }
338 
340  {
341  auto it = *this;
342  ++(*this);
343  return it;
344  }
345 
347  {
348  auto t = ++it_;
349  element_ = *--t;
350  return *this;
351  }
352 
354  {
355  auto it = *this;
356  --(*this);
357  return it;
358  }
359 
360  private:
363  }; // reverse_iterator
364 
365  // clang-format off
367  path::iterator _first2, path::iterator _last2) -> bool;
368 
369  inline auto operator==(const path& _lhs, const path& _rhs) noexcept -> bool { return _lhs.compare(_rhs) == 0; }
370  inline auto operator!=(const path& _lhs, const path& _rhs) noexcept -> bool { return _lhs.compare(_rhs) != 0; }
371  inline auto operator< (const path& _lhs, const path& _rhs) noexcept -> bool { return _lhs.compare(_rhs) < 0; }
372  inline auto operator<=(const path& _lhs, const path& _rhs) noexcept -> bool { return _lhs.compare(_rhs) <= 0; }
373  inline auto operator> (const path& _lhs, const path& _rhs) noexcept -> bool { return _lhs.compare(_rhs) > 0; }
374  inline auto operator>=(const path& _lhs, const path& _rhs) noexcept -> bool { return _lhs.compare(_rhs) >= 0; }
375 
376  inline auto operator/(const path& _lhs, const path& _rhs) -> path { return path{_lhs} /= _rhs; }
377  // clang-format on
378 
379  auto operator<<(std::ostream& _os, const path& _p) -> std::ostream&;
380  auto operator>>(std::istream& _is, path& _p) -> std::istream&;
381 
382  inline auto swap(path& _lhs, path& _rhs) noexcept -> void { _lhs.swap(_rhs); }
383 
384  auto hash_value(const path& _p) noexcept -> std::size_t;
385 } // namespace irods::experimental::filesystem
386 
387 #endif // IRODS_FILESYSTEM_PATH_HPP
irods::experimental::filesystem::path::reverse_iterator::operator!=
auto operator!=(const reverse_iterator &_rhs) const noexcept -> bool
Definition: path.hpp:329
irods::experimental::filesystem::hash_value
auto hash_value(const path &_p) noexcept -> std::size_t
Definition: path.cpp:460
irods::experimental::filesystem::path::reverse_iterator::reverse_iterator
reverse_iterator()=default
irods::experimental::filesystem::path::dot
static constexpr const value_type *const dot
Definition: path.hpp:31
irods::experimental::filesystem::path::has_object_name
auto has_object_name() const -> bool
Definition: path.hpp:225
irods::experimental::filesystem::path::operator=
auto operator=(const Source &_source) -> path &
Definition: path.hpp:101
irods::experimental::filesystem::operator>>
auto operator>>(std::istream &_is, path &_p) -> std::istream &
Definition: path.cpp:452
irods::experimental::filesystem::path::replace_extension
auto replace_extension(const path &_replacement={}) -> path &
Definition: path.cpp:77
irods::experimental::filesystem::path::lexically_proximate
auto lexically_proximate(const path &_base) const -> path
Definition: path.cpp:161
irods::experimental::filesystem::path::is_absolute
auto is_absolute() const -> bool
Definition: path.hpp:228
irods::experimental::filesystem::path::reverse_iterator::operator--
auto operator--() -> reverse_iterator &
Definition: path.hpp:346
irods::experimental::filesystem::path::operator=
auto operator=(value_type *_p) -> path &
Definition: path.hpp:87
irods::experimental::filesystem::path::iterator::reference
value_type & reference
Definition: path.hpp:252
irods::experimental::filesystem::path::reverse_iterator::operator=
auto operator=(const reverse_iterator &) -> reverse_iterator &=default
irods::experimental::filesystem::path::end
auto end() const -> iterator
Definition: path.cpp:267
irods::experimental::filesystem::path::operator/=
auto operator/=(const path &_p) -> path &
Definition: path.cpp:39
irods::experimental::filesystem::path::remove_object_name
auto remove_object_name() -> path &
Definition: path.cpp:58
irods::experimental::filesystem::path::reverse_iterator::~reverse_iterator
~reverse_iterator()=default
irods::experimental::filesystem::path::path
path(const path &_p)=default
irods::experimental::filesystem::path
Definition: path.hpp:15
irods::experimental::filesystem::path::clear
auto clear() -> void
Definition: path.hpp:183
irods::experimental::filesystem::path::reverse_iterator
Definition: path.hpp:296
irods::experimental::filesystem::path::begin
auto begin() const -> iterator
Definition: path.cpp:262
irods::experimental::filesystem::path::assign
auto assign(InputIterator _begin, InputIterator _end) -> path &
Definition: path.hpp:123
irods::experimental::filesystem::path::operator+=
auto operator+=(const Source &_p) -> path &
Definition: path.hpp:165
path_traits.hpp
irods::experimental::filesystem::path::concat
auto concat(InputIterator _begin, InputIterator _end) -> path &
Definition: path.hpp:176
irods::experimental::filesystem::path::~path
~path()=default
irods::experimental::filesystem::path::reverse_iterator::difference_type
iterator::difference_type difference_type
Definition: path.hpp:302
irods::experimental::filesystem::path::operator+=
auto operator+=(const string_type &_p) -> path &
Definition: path.hpp:158
irods::experimental::filesystem::path::iterator::path_ptr_
pointer path_ptr_
Definition: path.hpp:290
irods::experimental::filesystem::path::path
path()=default
irods::experimental::filesystem::path::iterator::operator!=
auto operator!=(const iterator &_other) const noexcept -> bool
Definition: path.hpp:274
irods::experimental::filesystem::path::reverse_iterator::element_
path element_
Definition: path.hpp:362
irods::experimental::filesystem::path::iterator::element_
path element_
Definition: path.hpp:291
irods::experimental::filesystem::path::empty
auto empty() const -> bool
Definition: path.hpp:221
irods::experimental::filesystem::path::is_relative
auto is_relative() const -> bool
Definition: path.hpp:229
irods::experimental::filesystem::path::swap
auto swap(path &_rhs) -> void
Definition: path.hpp:189
irods::experimental::filesystem::path::operator=
auto operator=(const value_type *_p) -> path &
Definition: path.hpp:81
irods::experimental::filesystem::path::reverse_iterator::reverse_iterator
reverse_iterator(iterator _it)
Definition: path.hpp:308
irods::experimental::filesystem::path::operator+=
auto operator+=(const value_type *_p) -> path &
Definition: path.hpp:159
irods::experimental::filesystem::path::operator=
auto operator=(const path &_p) -> path &=default
irods::experimental::filesystem::path::reverse_iterator::operator++
auto operator++(int) -> reverse_iterator
Definition: path.hpp:339
irods::experimental::filesystem::path::rend
auto rend() const -> reverse_iterator
Definition: path.cpp:280
irods::experimental::filesystem::operator/
auto operator/(const path &_lhs, const path &_rhs) -> path
Definition: path.hpp:376
irods::experimental::filesystem::path::iterator::pos_
path::string_type::size_type pos_
Definition: path.hpp:292
irods::experimental::filesystem::path::iterator::operator->
auto operator->() const -> pointer
Definition: path.hpp:278
irods::experimental::filesystem::path::string
auto string() const -> string_type
Definition: path.hpp:201
irods::experimental::filesystem::path::reverse_iterator::operator--
auto operator--(int) -> reverse_iterator
Definition: path.hpp:353
irods::experimental::filesystem::path::value_
string_type value_
Definition: path.hpp:243
irods::experimental::filesystem::path::dot_dot
static constexpr const value_type *const dot_dot
Definition: path.hpp:32
irods::experimental::filesystem::path::extension
auto extension() const -> path
Definition: path.cpp:243
irods::experimental::filesystem::path::iterator::operator=
auto operator=(const iterator &_other) -> iterator &=default
irods::experimental::filesystem::path::reverse_iterator::iterator_category
iterator::iterator_category iterator_category
Definition: path.hpp:303
irods::experimental::filesystem::path::has_relative_path
auto has_relative_path() const -> bool
Definition: path.hpp:223
irods::experimental::filesystem::path::iterator::operator=
auto operator=(iterator &&_other) -> iterator &=default
irods::experimental::filesystem::path::stem
auto stem() const -> path
Definition: path.cpp:224
irods::experimental::filesystem::client::end
auto end(const collection_iterator &) noexcept -> const collection_iterator
Definition: collection_iterator.hpp:88
irods::experimental::filesystem::path::reverse_iterator::it_
iterator it_
Definition: path.hpp:361
irods::experimental::filesystem::path::iterator::value_type
const path value_type
Definition: path.hpp:250
irods::experimental::filesystem::path::iterator::operator*
auto operator*() const -> reference
Definition: path.hpp:277
irods::experimental::filesystem::path::iterator::iterator
iterator(const iterator &_other)=default
irods::experimental::filesystem::client::begin
auto begin(collection_iterator _iter) noexcept -> collection_iterator
Definition: collection_iterator.hpp:83
irods::experimental::filesystem::path::append_separator_if_needed
void append_separator_if_needed(const path &_p)
Definition: path.cpp:285
irods::experimental::filesystem::path::replace_object_name
auto replace_object_name(const path &_replacement={}) -> path &
Definition: path.cpp:71
irods::experimental::filesystem::path::operator=
auto operator=(string_type &&_source) -> path &
Definition: path.hpp:93
irods::experimental::filesystem::path::reverse_iterator::operator++
auto operator++() -> reverse_iterator &
Definition: path.hpp:332
irods::experimental::filesystem
Definition: collection_entry.hpp:12
irods::experimental::filesystem::operator<<
auto operator<<(std::ostream &_os, const path &_p) -> std::ostream &
Definition: path.cpp:447
irods::experimental::filesystem::path::reverse_iterator::operator->
auto operator->() const -> pointer
Definition: path.hpp:326
irods::experimental::filesystem::path::assign
auto assign(string_type &&_source) -> path &
Definition: path.hpp:108
irods::experimental::filesystem::path::append
auto append(const Source &_source) -> path &
Definition: path.hpp:141
irods::experimental::filesystem::path::compare
auto compare(const path &_p) const noexcept -> int
Definition: path.cpp:167
irods::experimental::filesystem::path::preferred_separator
static constexpr value_type preferred_separator
Definition: path.hpp:27
irods::experimental::filesystem::operator!=
auto operator!=(const path &_lhs, const path &_rhs) noexcept -> bool
Definition: path.hpp:370
irods::experimental::filesystem::path::iterator::operator--
auto operator--(int) -> iterator
Definition: path.hpp:285
irods::experimental::filesystem::path::string_type
std::basic_string< value_type > string_type
Definition: path.hpp:22
get_irods_version.value
dictionary value
Definition: get_irods_version.py:27
irods::experimental::filesystem::client::move
auto move(rcComm_t &_comm, const path &_old_p, const path &_new_p) -> void
Definition: filesystem.cpp:881
irods::experimental::filesystem::path::iterator::difference_type
std::ptrdiff_t difference_type
Definition: path.hpp:253
irods::experimental::filesystem::operator<=
auto operator<=(const path &_lhs, const path &_rhs) noexcept -> bool
Definition: path.hpp:372
irods::experimental::filesystem::path::reverse_iterator::reverse_iterator
reverse_iterator(reverse_iterator &&)=default
irods::experimental::filesystem::path::reverse_iterator::operator==
auto operator==(const reverse_iterator &_rhs) const noexcept -> bool
Definition: path.hpp:328
irods::experimental::filesystem::path::iterator
Definition: path.hpp:247
irods::experimental::filesystem::path::operator+=
auto operator+=(const path &_p) -> path &
Definition: path.hpp:157
irods::experimental::filesystem::path::relative_path
auto relative_path() const -> path
Definition: path.cpp:205
irods::experimental::filesystem::operator>=
auto operator>=(const path &_lhs, const path &_rhs) noexcept -> bool
Definition: path.hpp:374
int
typedef int((*funcPtr)())
irods::experimental::filesystem::path::reverse_iterator::operator*
auto operator*() const -> reference
Definition: path.hpp:325
irods::experimental::filesystem::operator==
auto operator==(const path &_lhs, const path &_rhs) noexcept -> bool
Definition: path.hpp:369
irods::experimental::filesystem::path::has_root_collection
auto has_root_collection() const -> bool
Definition: path.hpp:222
irods::experimental::filesystem::path::value_type
char value_type
Definition: path.hpp:21
irods::experimental::filesystem::operator>
auto operator>(const path &_lhs, const path &_rhs) noexcept -> bool
Definition: path.hpp:373
irods::experimental::filesystem::path::root_collection
auto root_collection() const -> path
Definition: path.cpp:200
irods::experimental::filesystem::path::path
path(value_type *_source)
Definition: path.hpp:47
irods::experimental::filesystem::path::has_extension
auto has_extension() const -> bool
Definition: path.hpp:227
irods::experimental::filesystem::path::iterator::iterator_category
std::bidirectional_iterator_tag iterator_category
Definition: path.hpp:254
irods::experimental::filesystem::path::operator/=
auto operator/=(const Source &_source) -> path &
Definition: path.hpp:134
irods::experimental::filesystem::path::operator+=
auto operator+=(value_type _p) -> path &
Definition: path.hpp:160
irods::experimental::filesystem::path::assign
auto assign(const Source &_source) -> path &
Definition: path.hpp:115
irods::experimental::filesystem::path::lexically_relative
auto lexically_relative(const path &_base) const -> path
Definition: path.cpp:138
irods::experimental::filesystem::path::rbegin
auto rbegin() const -> reverse_iterator
Definition: path.cpp:275
irods::experimental::filesystem::path::iterator::iterator
iterator(iterator &&_other)=default
irods::experimental::filesystem::path::path
path(const value_type *_source)
Definition: path.hpp:42
irods::experimental::filesystem::path::operator=
auto operator=(path &&_p) noexcept -> path &=default
irods::experimental::filesystem::path::path
path(string_type &&_source) noexcept
Definition: path.hpp:52
irods::experimental::filesystem::path::has_parent_path
auto has_parent_path() const -> bool
Definition: path.hpp:224
irods::experimental::filesystem::path::path
path(path &&_p) noexcept=default
irods::experimental::filesystem::path::parent_path
auto parent_path() const -> path
Definition: path.cpp:214
irods::experimental::filesystem::operator<
auto operator<(const path &_lhs, const path &_rhs) noexcept -> bool
Definition: path.hpp:371
irods::experimental::filesystem::path::c_str
auto c_str() const noexcept -> const value_type *
Definition: path.hpp:200
irods::experimental::filesystem::path::path
path(InputIterator _begin, InputIterator _end)
Definition: path.hpp:69
irods::experimental::filesystem::path::iterator::operator++
auto operator++(int) -> iterator
Definition: path.hpp:282
irods::experimental::filesystem::lexicographical_compare
auto lexicographical_compare(path::iterator _first1, path::iterator _last1, path::iterator _first2, path::iterator _last2) -> bool
Definition: path.cpp:431
irods::experimental::filesystem::path::reverse_iterator::reverse_iterator
reverse_iterator(const reverse_iterator &)=default
irods::experimental::filesystem::path::lexically_normal
auto lexically_normal() const -> path
Definition: path.cpp:96
irods::experimental::filesystem::path::has_stem
auto has_stem() const -> bool
Definition: path.hpp:226
irods::experimental::filesystem::path::iterator::operator==
auto operator==(const iterator &_other) const noexcept -> bool
Definition: path.hpp:269
irods::experimental::filesystem::path::object_name
auto object_name() const -> path
Definition: path.cpp:219
irods::experimental::filesystem::path::reverse_iterator::operator=
auto operator=(reverse_iterator &&) -> reverse_iterator &=default
irods::experimental::filesystem::path::iterator::iterator
iterator()=default
irods::experimental::filesystem::path::append
auto append(InputIterator _begin, InputIterator _end) -> path &
Definition: path.hpp:149
irods::experimental::filesystem::path::path
path(const Source &_source)
Definition: path.hpp:61
irods::experimental::filesystem::path::iterator::pointer
value_type * pointer
Definition: path.hpp:251
irods::experimental::filesystem::path::iterator::~iterator
~iterator()=default