Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.29 KB | None | 0 0
  1. namespace Evil
  2. {
  3.     public struct Bitmask<TEnum>
  4.     {
  5.         private int bitmask;
  6.  
  7.         public Bitmask(TEnum bitmask)
  8.         {
  9.             this.bitmask = Convert.ToInt32(bitmask);
  10.         }
  11.  
  12.         private Bitmask(int bitmask)
  13.         {
  14.             this.bitmask = bitmask;
  15.         }
  16.  
  17.         public bool this[TEnum bitmask]
  18.         {
  19.             get
  20.             {
  21.                 return (int)(this.bitmask & Convert.ToInt32(bitmask)) > 0;
  22.             }
  23.             set
  24.             {
  25.                 if (value)
  26.                 {
  27.                     this.bitmask &= ~Convert.ToInt32(bitmask);
  28.                 }
  29.                 else
  30.                 {
  31.                     this.bitmask |= Convert.ToInt32(bitmask);
  32.                 }
  33.             }
  34.         }
  35.  
  36.         public static Bitmask<TEnum> operator &(Bitmask<TEnum> left, Bitmask<TEnum> right)
  37.         {
  38.             return new Bitmask<TEnum>(left.bitmask & right.bitmask);
  39.         }
  40.  
  41.         public static Bitmask<TEnum> operator |(Bitmask<TEnum> left, Bitmask<TEnum> right)
  42.         {
  43.             return new Bitmask<TEnum>(left.bitmask | right.bitmask);
  44.         }
  45.  
  46.         public static Bitmask<TEnum> operator ~(Bitmask<TEnum> right)
  47.         {
  48.             return new Bitmask<TEnum>(~right.bitmask);
  49.         }
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement