bit-flags.ts 613 B

1234567891011121314151617
  1. /**
  2. * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
  3. *
  4. * @author David Sehnal <david.sehnal@gmail.com>
  5. */
  6. type BitFlags<Flags> = number & Flags
  7. namespace BitFlags {
  8. export function create<F>(flags: F): BitFlags<F> { return flags as any; }
  9. export function has<F>(flags: BitFlags<F>, flag: F) { return ((flags as any) & (flag as any)) !== 0; }
  10. /** toCheck must be non-zero */
  11. export function hasAll<F>(flags: BitFlags<F>, toCheck: BitFlags<F>) { return !!toCheck && ((flags as any) & (toCheck as any)) === (toCheck as any); }
  12. }
  13. export { BitFlags };