diff options
Diffstat (limited to 'src/base/io/OpenFileFlag.cpp')
-rw-r--r-- | src/base/io/OpenFileFlag.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/base/io/OpenFileFlag.cpp b/src/base/io/OpenFileFlag.cpp new file mode 100644 index 00000000..47069b29 --- /dev/null +++ b/src/base/io/OpenFileFlag.cpp @@ -0,0 +1,19 @@ +#include "cru/base/io/OpenFileFlag.h" + +namespace cru::io { +bool CheckOpenFileFlag(OpenFileFlag flags) { + auto has = [flags](OpenFileFlag flag) { return flags & flag; }; + + if ((has(OpenFileFlags::Append) || has(OpenFileFlags::Truncate) || + has(OpenFileFlags::Create)) && + !has(OpenFileFlags::Write)) { + return false; + } + + if (has(OpenFileFlags::Truncate) && has(OpenFileFlags::Append)) { + return false; + } + + return true; +} +} // namespace cru::io |