1*4bdff4beSrobert // -*- C++ -*- 2*4bdff4beSrobert //===----------------------------------------------------------------------===// 3*4bdff4beSrobert // 4*4bdff4beSrobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*4bdff4beSrobert // See https://llvm.org/LICENSE.txt for license information. 6*4bdff4beSrobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*4bdff4beSrobert // 8*4bdff4beSrobert //===----------------------------------------------------------------------===// 9*4bdff4beSrobert 10*4bdff4beSrobert #ifndef _LIBCPP___FILESYSTEM_FILE_STATUS_H 11*4bdff4beSrobert #define _LIBCPP___FILESYSTEM_FILE_STATUS_H 12*4bdff4beSrobert 13*4bdff4beSrobert #include <__availability> 14*4bdff4beSrobert #include <__config> 15*4bdff4beSrobert #include <__filesystem/file_type.h> 16*4bdff4beSrobert #include <__filesystem/perms.h> 17*4bdff4beSrobert 18*4bdff4beSrobert #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 19*4bdff4beSrobert # pragma GCC system_header 20*4bdff4beSrobert #endif 21*4bdff4beSrobert 22*4bdff4beSrobert #ifndef _LIBCPP_CXX03_LANG 23*4bdff4beSrobert 24*4bdff4beSrobert _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM 25*4bdff4beSrobert 26*4bdff4beSrobert _LIBCPP_AVAILABILITY_FILESYSTEM_PUSH 27*4bdff4beSrobert 28*4bdff4beSrobert class _LIBCPP_TYPE_VIS file_status { 29*4bdff4beSrobert public: 30*4bdff4beSrobert // constructors 31*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY file_status()32*4bdff4beSrobert file_status() noexcept : file_status(file_type::none) {} 33*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY 34*4bdff4beSrobert explicit file_status(file_type __ft, perms __prms = perms::unknown) noexcept __ft_(__ft)35*4bdff4beSrobert : __ft_(__ft), 36*4bdff4beSrobert __prms_(__prms) {} 37*4bdff4beSrobert 38*4bdff4beSrobert file_status(const file_status&) noexcept = default; 39*4bdff4beSrobert file_status(file_status&&) noexcept = default; 40*4bdff4beSrobert 41*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY ~file_status()42*4bdff4beSrobert ~file_status() {} 43*4bdff4beSrobert 44*4bdff4beSrobert file_status& operator=(const file_status&) noexcept = default; 45*4bdff4beSrobert file_status& operator=(file_status&&) noexcept = default; 46*4bdff4beSrobert 47*4bdff4beSrobert // observers 48*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY type()49*4bdff4beSrobert file_type type() const noexcept { return __ft_; } 50*4bdff4beSrobert 51*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY permissions()52*4bdff4beSrobert perms permissions() const noexcept { return __prms_; } 53*4bdff4beSrobert 54*4bdff4beSrobert // modifiers 55*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY type(file_type __ft)56*4bdff4beSrobert void type(file_type __ft) noexcept { __ft_ = __ft; } 57*4bdff4beSrobert 58*4bdff4beSrobert _LIBCPP_INLINE_VISIBILITY permissions(perms __p)59*4bdff4beSrobert void permissions(perms __p) noexcept { __prms_ = __p; } 60*4bdff4beSrobert 61*4bdff4beSrobert private: 62*4bdff4beSrobert file_type __ft_; 63*4bdff4beSrobert perms __prms_; 64*4bdff4beSrobert }; 65*4bdff4beSrobert 66*4bdff4beSrobert _LIBCPP_AVAILABILITY_FILESYSTEM_POP 67*4bdff4beSrobert 68*4bdff4beSrobert _LIBCPP_END_NAMESPACE_FILESYSTEM 69*4bdff4beSrobert 70*4bdff4beSrobert #endif // _LIBCPP_CXX03_LANG 71*4bdff4beSrobert 72*4bdff4beSrobert #endif // _LIBCPP___FILESYSTEM_FILE_STATUS_H 73