1#ifndef MSTL_CORE_FILE_FILE_CONSTANTS_HPP__
2#define MSTL_CORE_FILE_FILE_CONSTANTS_HPP__
4#ifdef MSTL_PLATFORM_WINDOWS__
6#include "MSTL/core/config/undef_cmacro.hpp"
8#ifdef MSTL_PLATFORM_LINUX__
16MSTL_INLINE17
constexpr auto FILE_SPLITER =
17#ifdef MSTL_PLATFORM_WINDOWS__
19#elif defined(MSTL_PLATFORM_LINUX__)
23MSTL_INLINE17
constexpr char PREFERRED_SEPARATOR =
24#ifdef MSTL_PLATFORM_WINDOWS__
26#elif defined(MSTL_PLATFORM_LINUX__)
31#ifdef MSTL_PLATFORM_WINDOWS__
33#elif defined(MSTL_PLATFORM_LINUX__)
37enum class FILE_ACCESS : fud_t {
38#ifdef MSTL_PLATFORM_WINDOWS__
40 WRITE = GENERIC_WRITE,
41 READ_WRITE = GENERIC_READ | GENERIC_WRITE,
42 APPEND = FILE_APPEND_DATA | GENERIC_WRITE
43#elif defined(MSTL_PLATFORM_LINUX__)
47 APPEND = O_WRONLY | O_APPEND
51constexpr FILE_ACCESS
operator |(FILE_ACCESS a, FILE_ACCESS b) {
52 return static_cast<FILE_ACCESS
>(
static_cast<fud_t
>(a) |
static_cast<fud_t
>(b));
54constexpr FILE_ACCESS
operator &(FILE_ACCESS a, FILE_ACCESS b) {
55 return static_cast<FILE_ACCESS
>(
static_cast<fud_t
>(a) &
static_cast<fud_t
>(b));
59enum class FILE_SHARED : fud_t {
60#ifdef MSTL_PLATFORM_WINDOWS__
61 SHARE_READ = FILE_SHARE_READ,
62 SHARE_WRITE = FILE_SHARE_WRITE,
63 SHARE_READ_WRITE = FILE_SHARE_READ | FILE_SHARE_WRITE,
64 SHARE_DELETE = FILE_SHARE_DELETE,
65 SHARE_ALL = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
67#elif defined(MSTL_PLATFORM_LINUX__)
77constexpr FILE_SHARED
operator |(FILE_SHARED a, FILE_SHARED b) {
78 return static_cast<FILE_SHARED
>(
static_cast<fud_t
>(a) |
static_cast<fud_t
>(b));
80constexpr FILE_SHARED
operator &(FILE_SHARED a, FILE_SHARED b) {
81 return static_cast<FILE_SHARED
>(
static_cast<fud_t
>(a) &
static_cast<fud_t
>(b));
85enum class FILE_CREATION : fud_t {
86#ifdef MSTL_PLATFORM_WINDOWS__
87 CREATE_FORCE = CREATE_ALWAYS,
88 CREATE_NO_EXIST = CREATE_NEW,
89 OPEN_FORCE = OPEN_ALWAYS,
90 OPEN_EXIST = OPEN_EXISTING,
91 TRUNCATE_EXIST = TRUNCATE_EXISTING
92#elif defined(MSTL_PLATFORM_LINUX__)
93 CREATE_FORCE = O_CREAT | O_TRUNC,
94 CREATE_NO_EXIST = O_CREAT | O_EXCL,
97 TRUNCATE_EXIST = O_TRUNC
101constexpr FILE_CREATION
operator |(FILE_CREATION a, FILE_CREATION b) {
102 return static_cast<FILE_CREATION
>(
static_cast<fud_t
>(a) |
static_cast<fud_t
>(b));
104constexpr FILE_CREATION
operator &(FILE_CREATION a, FILE_CREATION b) {
105 return static_cast<FILE_CREATION
>(
static_cast<fud_t
>(a) &
static_cast<fud_t
>(b));
109enum class FILE_ATTRI : fud_t {
110#ifdef MSTL_PLATFORM_WINDOWS__
111 NORMAL = FILE_ATTRIBUTE_NORMAL,
112 READONLY = FILE_ATTRIBUTE_READONLY,
113 HIDDEN = FILE_ATTRIBUTE_HIDDEN,
114 SYSTEM = FILE_ATTRIBUTE_SYSTEM,
115 DIRECTORY = FILE_ATTRIBUTE_DIRECTORY,
116 ARCHIVE = FILE_ATTRIBUTE_ARCHIVE,
117 DEVICE = FILE_ATTRIBUTE_DEVICE,
118 TEMPORARY = FILE_ATTRIBUTE_TEMPORARY,
119 REPARSE_POINT = FILE_ATTRIBUTE_REPARSE_POINT,
120 COMPRESSED = FILE_ATTRIBUTE_COMPRESSED,
121 OFFLINE = FILE_ATTRIBUTE_OFFLINE,
122 ENCRYPTED = FILE_ATTRIBUTE_ENCRYPTED,
123 VIRTUAL = FILE_ATTRIBUTE_VIRTUAL,
124 OVERLAPPED = FILE_FLAG_OVERLAPPED,
125 NO_BUFFERING = FILE_FLAG_NO_BUFFERING,
126 WRITE_THROUGH = FILE_FLAG_WRITE_THROUGH,
128#elif defined(MSTL_PLATFORM_LINUX__)
129 NORMAL = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH,
130 READONLY = S_IRUSR | S_IRGRP | S_IROTH,
132 DEVICE = S_IFBLK | S_IFCHR,
133 REPARSE_POINT = S_IFLNK,
135 NO_BUFFERING = O_DIRECT,
136 WRITE_THROUGH = O_SYNC,
141constexpr FILE_ATTRI
operator |(FILE_ATTRI a, FILE_ATTRI b) {
142 return static_cast<FILE_ATTRI
>(
static_cast<fud_t
>(a) |
static_cast<fud_t
>(b));
144constexpr FILE_ATTRI
operator &(FILE_ATTRI a, FILE_ATTRI b) {
145 return static_cast<FILE_ATTRI
>(
static_cast<fud_t
>(a) &
static_cast<fud_t
>(b));
149enum class FILE_POINTER : fud_t {
150#ifdef MSTL_PLATFORM_WINDOWS__
152 CURRENT = FILE_CURRENT,
154#elif defined(MSTL_PLATFORM_LINUX__)
161enum class FILE_LOCK : fud_t {
162#ifdef MSTL_PLATFORM_WINDOWS__
164 EXCLUSIVE = LOCKFILE_EXCLUSIVE_LOCK,
165 FAIL_IMMEDIATELY = LOCKFILE_FAIL_IMMEDIATELY,
166 SHARED_NB = LOCKFILE_FAIL_IMMEDIATELY,
167 EXCLUSIVE_NB = LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY
168#elif defined(MSTL_PLATFORM_LINUX__)
171 FAIL_IMMEDIATELY = LOCK_NB,
172 SHARED_NB = LOCK_SH | LOCK_NB,
173 EXCLUSIVE_NB = LOCK_EX | LOCK_NB
177constexpr FILE_LOCK
operator |(FILE_LOCK a, FILE_LOCK b) {
178 return static_cast<FILE_LOCK
>(
static_cast<fud_t
>(a) |
static_cast<fud_t
>(b));
180constexpr FILE_LOCK
operator &(FILE_LOCK a, FILE_LOCK b) {
181 return static_cast<FILE_LOCK
>(
static_cast<fud_t
>(a) &
static_cast<fud_t
>(b));
185enum class FILE_WATCH_EVENT {
191 ALL = CREATED | DELETED | MODIFIED | RENAMED | ACCESSED
195enum class FILE_MAP_HINT {
202MSTL_INLINE17
constexpr size_t FILE_BUFFER_SIZE = 8192;
constexpr memory_order operator|(memory_order mo, memory_order_modifier mod) noexcept
内存顺序与修饰符的或操作符
constexpr memory_order operator&(memory_order mo, memory_order_modifier mod) noexcept
内存顺序与修饰符的与操作符
#define MSTL_END_NAMESPACE__
结束全局命名空间MSTL
#define MSTL_BEGIN_NAMESPACE__
开始全局命名空间MSTL