diff options
author | humper@google.com <humper@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-04-08 21:44:11 +0000 |
---|---|---|
committer | humper@google.com <humper@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-04-08 21:44:11 +0000 |
commit | 75e3ca127cd14fffc9c8df7ea03d6529fb001831 (patch) | |
tree | ef98cdcf55fb22388bf648e90f305ac19b9535d0 /include | |
parent | 496120185c7baed4edf1c110f4f5b43f29bab1c0 (diff) |
Error checking / reporting API
Review URL: https://codereview.chromium.org/13699004
git-svn-id: http://skia.googlecode.com/svn/trunk@8566 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkError.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/include/core/SkError.h b/include/core/SkError.h new file mode 100644 index 0000000000..ce2994cca0 --- /dev/null +++ b/include/core/SkError.h @@ -0,0 +1,86 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkError_DEFINED +#define SkError_DEFINED + + +/** \file SkError.h +*/ + +enum SkError { + /** All is well + */ + kNoError_SkError=0, + + /** User argument passed to Skia function was invalid: NULL when that’s + * not allowed, out of numeric range, bad enum, or violating some + * other general precondition. + */ + kInvalidArgument_SkError, + + /** User tried to perform some operation in a state when the operation + * was not legal, or the operands make no sense (e.g., asking for + * pixels from an SkPictureCanvas). Other examples might be + * inset()’ing a rectangle to make it degenerate (negative width/height). + */ + kInvalidOperation_SkError, + + /** Probably not needed right now, but in the future we could have opaque + * handles for SkPictures floating around, and it would be a good idea + * to anticipate this kind of issue. + */ + kInvalidHandle_SkError, + + /** This is probably not possible because paint surely has defaults for + * everything, but perhaps a paint can get into a bad state somehow. + */ + kInvalidPaint_SkError, + + /** Skia was unable to allocate memory to perform some task. + */ + kOutOfMemory_SkError, + + /** Skia failed while trying to consume some external resource. + */ + kParseError_SkError +}; + +/** Return the current per-thread error code. Error codes are "sticky"; they + * are not not reset by subsequent successful operations. + */ +SkError SkGetLastError(); + +/** Clear the current per-thread error code back to kNoError_SkError. + */ +void SkClearLastError(); + +/** Type for callback functions to be invoked whenever an error is registered. + * Callback functions take the error code being set, as well as a context + * argument that is provided when the callback is registered. + */ +typedef void (*SkErrorCallbackFunction)(SkError, void *); + +/** Set the current per-thread error callback. + * + * @param cb The callback function to be invoked. Passing NULL + * for cb will revert to the default error callback which + * does nothing on release builds, but on debug builds will + * print an informative error message to the screen. + * @param context An arbitrary pointer that will be passed to + * the provided callback function. + */ +void SkSetErrorCallback(SkErrorCallbackFunction cb, void *context); + +/** Get a human-readable description of the last (per-thread) error that + * occurred. The returned error message will include not only a human + * readable version of the error code, but also information about the + * conditions that led to the error itself. + */ +const char *SkGetLastErrorString(); + +#endif /* SkError_DEFINED */ |