aboutsummaryrefslogtreecommitdiff
path: root/src/base/io/OpenFileFlag.cpp
blob: 47069b295c63a5bc580269283442765cb09bcb86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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