Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Evil
- {
- public struct Bitmask<TEnum>
- {
- private int bitmask;
- public Bitmask(TEnum bitmask)
- {
- this.bitmask = Convert.ToInt32(bitmask);
- }
- private Bitmask(int bitmask)
- {
- this.bitmask = bitmask;
- }
- public bool this[TEnum bitmask]
- {
- get
- {
- return (int)(this.bitmask & Convert.ToInt32(bitmask)) > 0;
- }
- set
- {
- if (value)
- {
- this.bitmask &= ~Convert.ToInt32(bitmask);
- }
- else
- {
- this.bitmask |= Convert.ToInt32(bitmask);
- }
- }
- }
- public static Bitmask<TEnum> operator &(Bitmask<TEnum> left, Bitmask<TEnum> right)
- {
- return new Bitmask<TEnum>(left.bitmask & right.bitmask);
- }
- public static Bitmask<TEnum> operator |(Bitmask<TEnum> left, Bitmask<TEnum> right)
- {
- return new Bitmask<TEnum>(left.bitmask | right.bitmask);
- }
- public static Bitmask<TEnum> operator ~(Bitmask<TEnum> right)
- {
- return new Bitmask<TEnum>(~right.bitmask);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement