mirror of
https://github.com/github/codeql.git
synced 2026-02-23 18:33:42 +01:00
73 lines
1.3 KiB
C++
73 lines
1.3 KiB
C++
enum MY_ENUM {
|
|
A = 0x1,
|
|
B = 0x2,
|
|
C = 0x4,
|
|
D = 0x8,
|
|
E = 0x10,
|
|
F = 0x20,
|
|
G = 0x40,
|
|
H = 0x80,
|
|
I = 0x100,
|
|
J = 0x200,
|
|
L = 0x400,
|
|
M = 0x800,
|
|
N = 0x1000,
|
|
O = 0x2000,
|
|
P = 0x4000,
|
|
Q = 0x8000,
|
|
R = 0x10000,
|
|
S = 0x20000,
|
|
T = 0x40000,
|
|
U = 0x80000,
|
|
V = 0x100000,
|
|
W = 0x200000,
|
|
X = 0x400000,
|
|
Y = 0x800000,
|
|
Z = 0x1000000,
|
|
AA = 0x2000000,
|
|
AB = 0x4000000,
|
|
AC = 0x8000000,
|
|
AD = 0x10000000,
|
|
AE = 0x20000000
|
|
};
|
|
|
|
typedef unsigned int MY_ENUM_FLAGS;
|
|
|
|
MY_ENUM_FLAGS check_and_subs(MY_ENUM_FLAGS x)
|
|
{
|
|
|
|
#define CHECK_AND_SUB(flag) if ((x & flag) == flag) { x -= flag; }
|
|
CHECK_AND_SUB(A);
|
|
CHECK_AND_SUB(B);
|
|
CHECK_AND_SUB(C);
|
|
CHECK_AND_SUB(D);
|
|
CHECK_AND_SUB(E);
|
|
CHECK_AND_SUB(F);
|
|
CHECK_AND_SUB(G);
|
|
CHECK_AND_SUB(H);
|
|
CHECK_AND_SUB(I);
|
|
CHECK_AND_SUB(J);
|
|
CHECK_AND_SUB(L);
|
|
CHECK_AND_SUB(M);
|
|
CHECK_AND_SUB(N);
|
|
CHECK_AND_SUB(O);
|
|
CHECK_AND_SUB(P);
|
|
CHECK_AND_SUB(Q);
|
|
CHECK_AND_SUB(R);
|
|
CHECK_AND_SUB(S);
|
|
CHECK_AND_SUB(T);
|
|
CHECK_AND_SUB(U);
|
|
CHECK_AND_SUB(V);
|
|
CHECK_AND_SUB(W);
|
|
CHECK_AND_SUB(X);
|
|
CHECK_AND_SUB(Y);
|
|
CHECK_AND_SUB(Z);
|
|
CHECK_AND_SUB(AA);
|
|
CHECK_AND_SUB(AB);
|
|
CHECK_AND_SUB(AC);
|
|
CHECK_AND_SUB(AD);
|
|
CHECK_AND_SUB(AE);
|
|
#undef CHECK_AND_SUB
|
|
|
|
return x;
|
|
} |