blob: e0dbf1c4ad5476a933b86a3e4c8d98f2c4ca0b8f (
plain)
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
|
/*
* Copyright 2013 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/*
* Error codes used by gmmain.cpp.
*/
namespace skiagm {
/**
* The complete list of error types we might encounter in GM.
*/
enum ErrorType {
#if SK_SUPPORT_GPU
kNoGpuContext_ErrorType,
#endif
kImageMismatch_ErrorType,
kMissingExpectations_ErrorType,
kWritingReferenceImage_ErrorType,
kLast_ErrorType = kWritingReferenceImage_ErrorType
};
/**
* A combination of 0 or more ErrorTypes.
*/
class ErrorCombination {
public:
ErrorCombination() : fBitfield(0) {}
ErrorCombination(const ErrorType type) : fBitfield(1 << type) {}
/**
* Returns true iff there are NO errors.
*/
bool isEmpty() const {
return (0 == this->fBitfield);
}
/**
* Adds this ErrorType to this ErrorCombination.
*/
void add(const ErrorType type) {
this->fBitfield |= (1 << type);
}
/**
* Adds all ErrorTypes in "other" to this ErrorCombination.
*/
void add(const ErrorCombination other) {
this->fBitfield |= other.fBitfield;
}
/**
* Returns true iff this ErrorCombination includes this ErrorType.
*/
bool includes(const ErrorType type) const {
return !(0 == (this->fBitfield & (1 << type)));
}
/**
* Returns a new ErrorCombination, which includes the union of all
* ErrorTypes in two ErrorCombination objects (this and other).
*/
ErrorCombination plus(const ErrorCombination& other) const {
ErrorCombination retval;
retval.fBitfield = this->fBitfield | other.fBitfield;
return retval;
}
/**
* Returns a new ErrorCombination, which is a copy of "this"
* but with all ErrorTypes in "other" removed.
*/
ErrorCombination minus(const ErrorCombination& other) const {
ErrorCombination retval;
retval.fBitfield = this->fBitfield & ~(other.fBitfield);
return retval;
}
private:
int fBitfield;
};
// No errors at all.
const static ErrorCombination kEmpty_ErrorCombination;
}
|