An extension class that allows various bitwise operations on an integer to be performed when dealing with a [Flags] Enum type.
// Bit wise operations on an integer as an extensions class public static class IntBitwiseOperationsExtender { // Returns bits set in lhs or rhs or both public static int BitwiseUnion(this int lhs, int rhs) { int bitWiseOr = lhs | rhs; return bitWiseOr; } // Return bits set common to both lhs and rhs public static int BitwiseIntersection(this int lhs, int rhs) { return lhs & rhs; } // Returns bits set in lhs or rhs but not in both public static int BitwiseExclusiveOr(this int lhs, int rhs) { int exclusiveOr = BitwiseUnion(lhs, rhs) - BitwiseIntersection(lhs, rhs); return exclusiveOr; } // Return lhs bits inverted, 0s becomes 1s and vice versa public static int BitwiseInvert(this int lhs) { int bitWiseOr = ~lhs; return bitWiseOr; } // Return lhs bits set minus any that are also set in the rhs public static int BitwiseRemove(this int lhs, int rhs) { int common = BitwiseIntersection(lhs, rhs); // Find the bits common to both sides int res = (int)lhs - (int)common; return res; } // Return a value that has all the bits set either in the lhs part or in the rhs part or both public static int BitwiseOr(this int lhs, int rhs) { return BitwiseUnion(lhs, rhs); // Same as a Bitwise Union } // Return true if lhs contains all the bits set within rhs public static bool BitwiseContains(this int lhs, int rhs) { int common = lhs & rhs; return (common == rhs); } // Return true if lhs contains one of the bits set within rhs public static bool BitwiseContainsOneOf(this int lhs, int rhs) { int common = lhs & rhs; return common > 0; } }
No comments:
Post a Comment