NexusForce
1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
file_constants.hpp
浏览该文件的文档.
1
#ifndef NEFORCE_CORE_FILE_FILE_CONSTANTS_HPP__
2
#define NEFORCE_CORE_FILE_FILE_CONSTANTS_HPP__
3
11
12
#include "
NeForce/core/config/windef.hpp
"
13
#ifdef NEFORCE_PLATFORM_WINDOWS
14
# include <windef.h>
15
# include <WinBase.h>
16
# ifdef max
17
# undef max
18
# endif
19
# ifdef min
20
# undef min
21
# endif
22
#endif
23
#ifdef NEFORCE_PLATFORM_LINUX
24
# include <fcntl.h>
25
#endif
26
NEFORCE_BEGIN_NAMESPACE__
27
33
34
class
NEFORCE_API
file
;
35
41
using
fud_t
=
42
#ifdef NEFORCE_PLATFORM_WINDOWS
43
::DWORD;
44
#elif defined(NEFORCE_PLATFORM_LINUX)
45
int;
46
#endif
47
48
55
enum class
file_access
:
fud_t
{
56
#ifdef NEFORCE_PLATFORM_WINDOWS
57
READ
= GENERIC_READ,
58
WRITE
= GENERIC_WRITE,
59
READ_WRITE
= GENERIC_READ | GENERIC_WRITE,
60
APPEND
= FILE_APPEND_DATA | GENERIC_WRITE
61
#else
62
READ
= O_RDONLY,
63
WRITE
= O_WRONLY,
64
READ_WRITE
= O_RDWR,
65
APPEND
= O_WRONLY | O_APPEND
66
#endif
67
};
68
69
constexpr
file_access
operator|(
file_access
a,
file_access
b) {
70
return
static_cast<
file_access
>
(
static_cast<
fud_t
>
(a) |
static_cast<
fud_t
>
(b));
71
}
72
73
constexpr
file_access
operator&(
file_access
a,
file_access
b) {
74
return
static_cast<
file_access
>
(
static_cast<
fud_t
>
(a) &
static_cast<
fud_t
>
(b));
75
}
76
77
84
enum class
file_shared
:
fud_t
{
85
#ifdef NEFORCE_PLATFORM_WINDOWS
86
SHARE_READ
= FILE_SHARE_READ,
87
SHARE_WRITE
= FILE_SHARE_WRITE,
88
SHARE_READ_WRITE
= FILE_SHARE_READ | FILE_SHARE_WRITE,
89
SHARE_DELETE
= FILE_SHARE_DELETE,
90
SHARE_ALL
= FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
91
NO_SHARE
= 0
92
#else
93
SHARE_READ
= 1,
94
SHARE_WRITE
= 2,
95
SHARE_READ_WRITE
= 3,
96
SHARE_DELETE
= 4,
97
SHARE_ALL
= 7,
98
NO_SHARE
= 0
99
#endif
100
};
101
102
constexpr
file_shared
operator|(
file_shared
a,
file_shared
b) {
103
return
static_cast<
file_shared
>
(
static_cast<
fud_t
>
(a) |
static_cast<
fud_t
>
(b));
104
}
105
106
constexpr
file_shared
operator&(
file_shared
a,
file_shared
b) {
107
return
static_cast<
file_shared
>
(
static_cast<
fud_t
>
(a) &
static_cast<
fud_t
>
(b));
108
}
109
110
117
enum class
file_creation
:
fud_t
{
118
#ifdef NEFORCE_PLATFORM_WINDOWS
119
CREATE_FORCE
= CREATE_ALWAYS,
120
CREATE_NO_EXIST
= CREATE_NEW,
121
OPEN_FORCE
= OPEN_ALWAYS,
122
OPEN_EXIST
= OPEN_EXISTING,
123
TRUNCATE_EXIST
= TRUNCATE_EXISTING
124
#else
125
CREATE_FORCE
= O_CREAT | O_TRUNC,
126
CREATE_NO_EXIST
= O_CREAT | O_EXCL,
127
OPEN_FORCE
= O_CREAT,
128
OPEN_EXIST
= 0,
129
TRUNCATE_EXIST
= O_TRUNC
130
#endif
131
};
132
133
constexpr
file_creation
operator|(
file_creation
a,
file_creation
b) {
134
return
static_cast<
file_creation
>
(
static_cast<
fud_t
>
(a) |
static_cast<
fud_t
>
(b));
135
}
136
137
constexpr
file_creation
operator&(
file_creation
a,
file_creation
b) {
138
return
static_cast<
file_creation
>
(
static_cast<
fud_t
>
(a) &
static_cast<
fud_t
>
(b));
139
}
140
141
148
enum class
file_attri
:
fud_t
{
149
#ifdef NEFORCE_PLATFORM_WINDOWS
150
NORMAL
= FILE_ATTRIBUTE_NORMAL,
151
READONLY
= FILE_ATTRIBUTE_READONLY,
152
HIDDEN
= FILE_ATTRIBUTE_HIDDEN,
153
SYSTEM
= FILE_ATTRIBUTE_SYSTEM,
154
DIRECTORY
= FILE_ATTRIBUTE_DIRECTORY,
155
ARCHIVE
= FILE_ATTRIBUTE_ARCHIVE,
156
DEVICE
= FILE_ATTRIBUTE_DEVICE,
157
TEMPORARY
= FILE_ATTRIBUTE_TEMPORARY,
158
REPARSE_POINT
= FILE_ATTRIBUTE_REPARSE_POINT,
159
COMPRESSED
= FILE_ATTRIBUTE_COMPRESSED,
160
OFFLINE
= FILE_ATTRIBUTE_OFFLINE,
161
ENCRYPTED
= FILE_ATTRIBUTE_ENCRYPTED,
162
VIRTUAL
= FILE_ATTRIBUTE_VIRTUAL,
163
OVERLAPPED
= FILE_FLAG_OVERLAPPED,
164
NO_BUFFERING
= FILE_FLAG_NO_BUFFERING,
165
WRITE_THROUGH
= FILE_FLAG_WRITE_THROUGH,
166
OTHERS
= 0
167
#else
168
NORMAL
= S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH,
169
READONLY
= S_IRUSR | S_IRGRP | S_IROTH,
170
DIRECTORY
= S_IFDIR,
171
DEVICE
= S_IFBLK | S_IFCHR,
172
REPARSE_POINT
= S_IFLNK,
173
OVERLAPPED
= 0,
174
NO_BUFFERING
= O_DIRECT,
175
WRITE_THROUGH
= O_SYNC,
176
OTHERS
= 0
177
#endif
178
};
179
180
constexpr
file_attri
operator|(
file_attri
a,
file_attri
b) {
181
return
static_cast<
file_attri
>
(
static_cast<
fud_t
>
(a) |
static_cast<
fud_t
>
(b));
182
}
183
184
constexpr
file_attri
operator&(
file_attri
a,
file_attri
b) {
185
return
static_cast<
file_attri
>
(
static_cast<
fud_t
>
(a) &
static_cast<
fud_t
>
(b));
186
}
187
188
195
enum class
file_pointer
:
fud_t
{
196
#ifdef NEFORCE_PLATFORM_WINDOWS
197
BEGIN
= FILE_BEGIN,
198
CURRENT
= FILE_CURRENT,
199
END
= FILE_END
200
#else
201
BEGIN
= SEEK_SET,
202
CURRENT
= SEEK_CUR,
203
END
= SEEK_END
204
#endif
205
};
206
207
214
enum class
file_lock
:
fud_t
{
215
#ifdef NEFORCE_PLATFORM_WINDOWS
216
SHARED
= 0,
217
EXCLUSIVE
= LOCKFILE_EXCLUSIVE_LOCK,
218
FAIL_IMMEDIATELY
= LOCKFILE_FAIL_IMMEDIATELY,
219
SHARED_NB
= LOCKFILE_FAIL_IMMEDIATELY,
220
EXCLUSIVE_NB
= LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY
221
#else
222
SHARED
= LOCK_SH,
223
EXCLUSIVE
= LOCK_EX,
224
FAIL_IMMEDIATELY
= LOCK_NB,
225
SHARED_NB
= LOCK_SH | LOCK_NB,
226
EXCLUSIVE_NB
= LOCK_EX | LOCK_NB
227
#endif
228
};
229
230
constexpr
file_lock
operator|(
file_lock
a,
file_lock
b) {
231
return
static_cast<
file_lock
>
(
static_cast<
fud_t
>
(a) |
static_cast<
fud_t
>
(b));
232
}
233
234
constexpr
file_lock
operator&(
file_lock
a,
file_lock
b) {
235
return
static_cast<
file_lock
>
(
static_cast<
fud_t
>
(a) &
static_cast<
fud_t
>
(b));
236
}
237
238
245
enum class
file_watch_event
{
246
CREATED
= 0x01,
247
DELETED
= 0x02,
248
MODIFIED
= 0x04,
249
RENAMED
= 0x08,
250
ACCESSED
= 0x10,
251
ALL
=
CREATED
|
DELETED
|
MODIFIED
|
RENAMED
|
ACCESSED
252
};
253
254
261
enum class
file_map_hint
{
262
NORMAL
= 0,
263
SEQUENTIAL
,
264
RANDOM
265
};
266
// File
268
269
NEFORCE_END_NAMESPACE__
270
#endif
// NEFORCE_CORE_FILE_FILE_CONSTANTS_HPP__
file
文件操作类
定义
file.hpp:43
fud_t
::DWORD fud_t
文件描述符类型
定义
file_constants.hpp:41
file_watch_event
file_watch_event
文件监视事件枚举
定义
file_constants.hpp:245
file_map_hint
file_map_hint
内存映射文件访问提示枚举
定义
file_constants.hpp:261
file_pointer
file_pointer
文件指针移动方式枚举
定义
file_constants.hpp:195
file_lock
file_lock
文件锁类型枚举
定义
file_constants.hpp:214
file_creation
file_creation
文件创建方式枚举
定义
file_constants.hpp:117
file_access
file_access
文件访问模式枚举
定义
file_constants.hpp:55
file_shared
file_shared
文件共享模式枚举
定义
file_constants.hpp:84
file_attri
file_attri
文件属性和标志枚举
定义
file_constants.hpp:148
file_watch_event::MODIFIED
@ MODIFIED
文件修改事件
定义
file_constants.hpp:248
file_watch_event::ALL
@ ALL
所有事件
定义
file_constants.hpp:251
file_watch_event::DELETED
@ DELETED
文件删除事件
定义
file_constants.hpp:247
file_watch_event::ACCESSED
@ ACCESSED
文件访问事件
定义
file_constants.hpp:250
file_watch_event::CREATED
@ CREATED
文件创建事件
定义
file_constants.hpp:246
file_watch_event::RENAMED
@ RENAMED
文件重命名事件
定义
file_constants.hpp:249
file_map_hint::RANDOM
@ RANDOM
随机访问模式
定义
file_constants.hpp:264
file_map_hint::SEQUENTIAL
@ SEQUENTIAL
顺序访问模式
定义
file_constants.hpp:263
file_pointer::BEGIN
@ BEGIN
从文件开头开始
定义
file_constants.hpp:197
file_pointer::CURRENT
@ CURRENT
从当前位置开始
定义
file_constants.hpp:198
file_pointer::END
@ END
从文件结尾开始
定义
file_constants.hpp:199
file_lock::SHARED
@ SHARED
共享锁
定义
file_constants.hpp:216
file_lock::FAIL_IMMEDIATELY
@ FAIL_IMMEDIATELY
立即失败
定义
file_constants.hpp:218
file_lock::SHARED_NB
@ SHARED_NB
非阻塞共享锁
定义
file_constants.hpp:219
file_lock::EXCLUSIVE_NB
@ EXCLUSIVE_NB
非阻塞独占锁
定义
file_constants.hpp:220
file_lock::EXCLUSIVE
@ EXCLUSIVE
独占锁
定义
file_constants.hpp:217
file_creation::CREATE_FORCE
@ CREATE_FORCE
强制创建新文件(覆盖已存在)
定义
file_constants.hpp:119
file_creation::OPEN_FORCE
@ OPEN_FORCE
打开文件,不存在则创建
定义
file_constants.hpp:121
file_creation::TRUNCATE_EXIST
@ TRUNCATE_EXIST
打开已存在文件并清空内容
定义
file_constants.hpp:123
file_creation::CREATE_NO_EXIST
@ CREATE_NO_EXIST
仅当文件不存在时创建
定义
file_constants.hpp:120
file_creation::OPEN_EXIST
@ OPEN_EXIST
仅打开已存在的文件
定义
file_constants.hpp:122
file_access::READ
@ READ
只读模式
定义
file_constants.hpp:57
file_access::APPEND
@ APPEND
追加模式
定义
file_constants.hpp:60
file_access::READ_WRITE
@ READ_WRITE
读写模式
定义
file_constants.hpp:59
file_access::WRITE
@ WRITE
只写模式
定义
file_constants.hpp:58
file_shared::SHARE_ALL
@ SHARE_ALL
允许所有操作
定义
file_constants.hpp:90
file_shared::SHARE_WRITE
@ SHARE_WRITE
允许其他进程写入
定义
file_constants.hpp:87
file_shared::NO_SHARE
@ NO_SHARE
不允许共享
定义
file_constants.hpp:91
file_shared::SHARE_READ_WRITE
@ SHARE_READ_WRITE
允许其他进程读写
定义
file_constants.hpp:88
file_shared::SHARE_READ
@ SHARE_READ
允许其他进程读取
定义
file_constants.hpp:86
file_shared::SHARE_DELETE
@ SHARE_DELETE
允许其他进程删除
定义
file_constants.hpp:89
file_attri::VIRTUAL
@ VIRTUAL
虚拟文件
定义
file_constants.hpp:162
file_attri::NORMAL
@ NORMAL
普通文件
定义
file_constants.hpp:150
file_attri::DIRECTORY
@ DIRECTORY
目录
定义
file_constants.hpp:154
file_attri::REPARSE_POINT
@ REPARSE_POINT
重解析点
定义
file_constants.hpp:158
file_attri::HIDDEN
@ HIDDEN
隐藏文件
定义
file_constants.hpp:152
file_attri::READONLY
@ READONLY
只读文件
定义
file_constants.hpp:151
file_attri::TEMPORARY
@ TEMPORARY
临时文件
定义
file_constants.hpp:157
file_attri::ENCRYPTED
@ ENCRYPTED
加密文件
定义
file_constants.hpp:161
file_attri::WRITE_THROUGH
@ WRITE_THROUGH
写穿缓存
定义
file_constants.hpp:165
file_attri::NO_BUFFERING
@ NO_BUFFERING
无缓冲I/O
定义
file_constants.hpp:164
file_attri::ARCHIVE
@ ARCHIVE
存档文件
定义
file_constants.hpp:155
file_attri::COMPRESSED
@ COMPRESSED
压缩文件
定义
file_constants.hpp:159
file_attri::OFFLINE
@ OFFLINE
离线文件
定义
file_constants.hpp:160
file_attri::OTHERS
@ OTHERS
其他属性
定义
file_constants.hpp:166
file_attri::OVERLAPPED
@ OVERLAPPED
支持异步I/O
定义
file_constants.hpp:163
file_attri::DEVICE
@ DEVICE
设备文件
定义
file_constants.hpp:156
file_attri::SYSTEM
@ SYSTEM
系统文件
定义
file_constants.hpp:153
windef.hpp
WindowsAPI 平台宏
include
NeForce
core
file
file_constants.hpp
制作者
1.16.0