diff options
Diffstat (limited to 'source/blender/bmesh/bmesh_error.h')
-rw-r--r-- | source/blender/bmesh/bmesh_error.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/source/blender/bmesh/bmesh_error.h b/source/blender/bmesh/bmesh_error.h new file mode 100644 index 00000000000..a93963f3d95 --- /dev/null +++ b/source/blender/bmesh/bmesh_error.h @@ -0,0 +1,46 @@ +#ifndef _BMESH_ERROR_H +#define _BMESH_ERROR_H + +/*----------- bmop error system ----------*/ + +/*pushes an error onto the bmesh error stack. + if msg is null, then the default message for the errorcode is used.*/ +void BMO_RaiseError(BMesh *bm, BMOperator *owner, int errcode, const char *msg); + +/*gets the topmost error from the stack. + returns error code or 0 if no error.*/ +int BMO_GetError(BMesh *bm, const char **msg, BMOperator **op); +int BMO_HasError(BMesh *bm); + +/*same as geterror, only pops the error off the stack as well*/ +int BMO_PopError(BMesh *bm, const char **msg, BMOperator **op); +void BMO_ClearStack(BMesh *bm); + +#if 0 +//this is meant for handling errors, like self-intersection test failures. +//it's dangerous to handle errors in general though, so disabled for now. + +/*catches an error raised by the op pointed to by catchop. + errorcode is either the errorcode, or BMERR_ALL for any + error.*/ +int BMO_CatchOpError(BMesh *bm, BMOperator *catchop, int errorcode, char **msg); +#endif + +#define BM_ELEM_INDEX_VALIDATE(_bm, _msg_a, _msg_b) \ + BM_ElemIndex_Validate(_bm, __FILE__ ":" STRINGIFY(__LINE__), __func__, _msg_a, _msg_b) + +/*------ error code defines -------*/ + +/*error messages*/ +#define BMERR_SELF_INTERSECTING 1 +#define BMERR_DISSOLVEDISK_FAILED 2 +#define BMERR_CONNECTVERT_FAILED 3 +#define BMERR_WALKER_FAILED 4 +#define BMERR_DISSOLVEFACES_FAILED 5 +#define BMERR_DISSOLVEVERTS_FAILED 6 +#define BMERR_TESSELATION 7 +#define BMERR_NONMANIFOLD 8 +#define BMERR_INVALID_SELECTION 9 +#define BMERR_MESH_ERROR 10 + +#endif /* _BMESH_ERROR_H */ |