xref: /openbsd-src/gnu/llvm/libcxx/include/__filesystem/file_status.h (revision 4bdff4bed0e3d54e55670334c7d0077db4170f86)
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