Chromium Code Reviews| Index: gm/gm_error.h |
| =================================================================== |
| --- gm/gm_error.h (revision 0) |
| +++ gm/gm_error.h (revision 0) |
| @@ -0,0 +1,87 @@ |
| +/* |
| + * 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 { |
| + |
| + /** |
|
epoger
2013/03/21 20:40:17
patchsets 2+3: instead of an ErrorBitfield (alias
|
| + * The complete list of error types we might encounter in GM. |
| + */ |
| + enum ErrorType { |
| + kNoGpuContext_ErrorType, |
| + kImageMismatch_ErrorType, |
| + kMissingExpectations_ErrorType, |
| + kWritingReferenceImage_ErrorType, |
| + kLast_ErrorType = kWritingReferenceImage_ErrorType |
|
epoger
2013/03/21 20:40:17
In a future CL, this will enable us to:
1. create
|
| + }; |
| + |
| + /** |
| + * 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; |
| +} |