6f6568b27e
This will enable future GM changes to report errors more completely/consistently, like skdiff. Review URL: https://codereview.chromium.org/12992003 git-svn-id: http://skia.googlecode.com/svn/trunk@8344 2bbb7eff-a529-9590-31e7-b0007b416f81
90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
/*
|
|
* 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;
|
|
}
|