// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <cstdint>

namespace blink {

using CharacterPropertyType = uint8_t;

enum class CharacterProperty : CharacterPropertyType {
  isCJKIdeographOrSymbol = 0x0001,
  isUprightInMixedVertical = 0x0002,
  isPotentialCustomElementNameChar = 0x0004,
};

inline CharacterProperty operator|(CharacterProperty a, CharacterProperty b) {
  return static_cast<CharacterProperty>(static_cast<CharacterPropertyType>(a) |
                                        static_cast<CharacterPropertyType>(b));
}

inline CharacterProperty operator&(CharacterProperty a, CharacterProperty b) {
  return static_cast<CharacterProperty>(static_cast<CharacterPropertyType>(a) &
                                        static_cast<CharacterPropertyType>(b));
}

inline CharacterProperty operator|=(CharacterProperty& a, CharacterProperty b) {
  a = a | b;
  return a;
}

}  // namespace blink
