| /* |
| * 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; |
| } |