File: CondFlag.cpp

package info (click to toggle)
storm-lang 0.7.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 52,004 kB
  • sloc: ansic: 261,462; cpp: 140,405; sh: 14,891; perl: 9,846; python: 2,525; lisp: 2,504; asm: 860; makefile: 678; pascal: 70; java: 52; xml: 37; awk: 12
file content (94 lines) | stat: -rw-r--r-- 1,855 bytes parent folder | download | duplicates (4)
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;
	}

}