1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
#include "stdafx.h"
#include "CondFlag.h"
namespace code {
const wchar *name(CondFlag c) {
switch (c) {
case ifAlways:
return S("always");
case ifNever:
return S("never");
case ifOverflow:
return S("overflow");
case ifNoOverflow:
return S("no overflow");
case ifEqual:
return S("equal");
case ifNotEqual:
return S("not equal");
case ifBelow:
return S("below");
case ifBelowEqual:
return S("below/equal");
case ifAboveEqual:
return S("above/equal");
case ifAbove:
return S("above");
case ifLess:
return S("less");
case ifLessEqual:
return S("less/equal");
case ifGreaterEqual:
return S("greater/equal");
case ifGreater:
return S("greater");
case ifFBelow:
return S("ifFBelow");
case ifFBelowEqual:
return S("ifFBelowEqual");
case ifFAboveEqual:
return S("ifFAboveEqual");
case ifFAbove:
return S("ifFAbove");
}
assert(false, L"Unknown CondFlag: " + ::toS(c));
return S("Unknown CondFlag");
}
CondFlag inverse(CondFlag c) {
switch (c) {
case ifAlways:
return ifNever;
case ifNever:
return ifAlways;
case ifOverflow:
return ifNoOverflow;
case ifNoOverflow:
return ifOverflow;
case ifEqual:
return ifNotEqual;
case ifNotEqual:
return ifEqual;
case ifBelow:
return ifAboveEqual;
case ifBelowEqual:
return ifAbove;
case ifAboveEqual:
return ifBelow;
case ifAbove:
return ifBelowEqual;
case ifLess:
return ifGreaterEqual;
case ifLessEqual:
return ifGreater;
case ifGreaterEqual:
return ifLess;
case ifGreater:
return ifLessEqual;
case ifFBelow:
return ifFAboveEqual;
case ifFBelowEqual:
return ifFAbove;
case ifFAboveEqual:
return ifFBelow;
case ifFAbove:
return ifFBelowEqual;
}
assert(false, L"Implement the inverse for this flag!");
return ifNever;
}
}
|