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
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
26NEFORCE_BEGIN_NAMESPACE__
27
33
34class NEFORCE_API file;
35
41using fud_t =
42#ifdef NEFORCE_PLATFORM_WINDOWS
43 ::DWORD;
44#elif defined(NEFORCE_PLATFORM_LINUX)
45 int;
46#endif
47
48
55enum 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
69constexpr 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
73constexpr 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
84enum 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
99#endif
100};
101
102constexpr 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
106constexpr 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
117enum 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,
129 TRUNCATE_EXIST = O_TRUNC
130#endif
131};
132
133constexpr 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
137constexpr 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
148enum 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,
174 NO_BUFFERING = O_DIRECT,
175 WRITE_THROUGH = O_SYNC,
177#endif
178};
179
180constexpr 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
184constexpr 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
195enum 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
214enum 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,
225 SHARED_NB = LOCK_SH | LOCK_NB,
226 EXCLUSIVE_NB = LOCK_EX | LOCK_NB
227#endif
228};
229
230constexpr 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
234constexpr 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
246 CREATED = 0x01,
247 DELETED = 0x02,
248 MODIFIED = 0x04,
249 RENAMED = 0x08,
250 ACCESSED = 0x10,
252};
253
254
266 // File
268
269NEFORCE_END_NAMESPACE__
270#endif // NEFORCE_CORE_FILE_FILE_CONSTANTS_HPP__
文件操作类
file_watch_event
文件监视事件枚举
file_map_hint
内存映射文件访问提示枚举
enum class file_access :fud_t { READ=O_RDONLY, WRITE=O_WRONLY, READ_WRITE=O_RDWR, APPEND=O_WRONLY|O_APPEND } fud_t
文件描述符类型
file_pointer
文件指针移动方式枚举
file_lock
文件锁类型枚举
file_creation
文件创建方式枚举
file_shared
文件共享模式枚举
file_attri
文件属性和标志枚举
@ MODIFIED
文件修改事件
@ DELETED
文件删除事件
@ ACCESSED
文件访问事件
@ CREATED
文件创建事件
@ RENAMED
文件重命名事件
@ RANDOM
随机访问模式
@ SEQUENTIAL
顺序访问模式
@ BEGIN
从文件开头开始
@ CURRENT
从当前位置开始
@ END
从文件结尾开始
@ FAIL_IMMEDIATELY
立即失败
@ SHARED_NB
非阻塞共享锁
@ EXCLUSIVE_NB
非阻塞独占锁
@ CREATE_FORCE
强制创建新文件(覆盖已存在)
@ OPEN_FORCE
打开文件,不存在则创建
@ TRUNCATE_EXIST
打开已存在文件并清空内容
@ CREATE_NO_EXIST
仅当文件不存在时创建
@ OPEN_EXIST
仅打开已存在的文件
@ SHARE_ALL
允许所有操作
@ SHARE_WRITE
允许其他进程写入
@ NO_SHARE
不允许共享
@ SHARE_READ_WRITE
允许其他进程读写
@ SHARE_READ
允许其他进程读取
@ SHARE_DELETE
允许其他进程删除
@ NORMAL
普通文件
@ REPARSE_POINT
符号链接
@ READONLY
只读文件
@ WRITE_THROUGH
同步写入
@ OTHERS
其他属性
@ OVERLAPPED
Linux不支持异步I/O标志
@ DEVICE
设备文件
NeForce WindowsAPI 平台宏