defmodule GW2.ChatCode.Flag do
@moduledoc false
import Bitwise
@spec new() :: integer()
def new, do: 0b00000000
@spec check?(integer(), integer()) :: boolean()
def check?(flags, flag), do: (flags &&& flag) != 0
@spec maybe_check?(integer(), integer(), boolean()) :: boolean()
def maybe_check?(flags, flag, true), do: check?(flags, flag)
def maybe_check?(_flags, _flag, false), do: false
@spec set(integer(), integer()) :: integer()
def set(flags, flag), do: flags ||| flag
@spec maybe_set(integer(), integer(), boolean()) :: integer()
def maybe_set(flags, flag, true), do: set(flags, flag)
def maybe_set(flags, _flag, false), do: flags
end