aboutsummaryrefslogtreecommitdiff
path: root/src/common/io/OpenFileFlag.cpp
blob: 6b9957fe95d22f122a177a773d985b14dbb70e48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "cru/common/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