| 1 | /*===------- llvm-c/Error.h - llvm::Error class C Interface -------*- C -*-===*\ | 
| 2 | |*                                                                            *| | 
| 3 | |* Part of the LLVM Project, under the Apache License v2.0 with LLVM          *| | 
| 4 | |* Exceptions.                                                                *| | 
| 5 | |* See https://llvm.org/LICENSE.txt for license information.                  *| | 
| 6 | |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception                    *| | 
| 7 | |*                                                                            *| | 
| 8 | |*===----------------------------------------------------------------------===*| | 
| 9 | |*                                                                            *| | 
| 10 | |* This file defines the C interface to LLVM's Error class.                   *| | 
| 11 | |*                                                                            *| | 
| 12 | \*===----------------------------------------------------------------------===*/ | 
| 13 |  | 
| 14 | #ifndef LLVM_C_ERROR_H | 
| 15 | #define LLVM_C_ERROR_H | 
| 16 |  | 
| 17 | #include "llvm-c/ExternC.h" | 
| 18 |  | 
| 19 | LLVM_C_EXTERN_C_BEGIN | 
| 20 |  | 
| 21 | /** | 
| 22 |  * @defgroup LLVMCError Error Handling | 
| 23 |  * @ingroup LLVMC | 
| 24 |  * | 
| 25 |  * @{ | 
| 26 |  */ | 
| 27 |  | 
| 28 | #define LLVMErrorSuccess 0 | 
| 29 |  | 
| 30 | /** | 
| 31 |  * Opaque reference to an error instance. Null serves as the 'success' value. | 
| 32 |  */ | 
| 33 | typedef struct LLVMOpaqueError *LLVMErrorRef; | 
| 34 |  | 
| 35 | /** | 
| 36 |  * Error type identifier. | 
| 37 |  */ | 
| 38 | typedef const void *LLVMErrorTypeId; | 
| 39 |  | 
| 40 | /** | 
| 41 |  * Returns the type id for the given error instance, which must be a failure | 
| 42 |  * value (i.e. non-null). | 
| 43 |  */ | 
| 44 | LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err); | 
| 45 |  | 
| 46 | /** | 
| 47 |  * Dispose of the given error without handling it. This operation consumes the | 
| 48 |  * error, and the given LLVMErrorRef value is not usable once this call returns. | 
| 49 |  * Note: This method *only* needs to be called if the error is not being passed | 
| 50 |  * to some other consuming operation, e.g. LLVMGetErrorMessage. | 
| 51 |  */ | 
| 52 | void LLVMConsumeError(LLVMErrorRef Err); | 
| 53 |  | 
| 54 | /** | 
| 55 |  * Returns the given string's error message. This operation consumes the error, | 
| 56 |  * and the given LLVMErrorRef value is not usable once this call returns. | 
| 57 |  * The caller is responsible for disposing of the string by calling | 
| 58 |  * LLVMDisposeErrorMessage. | 
| 59 |  */ | 
| 60 | char *LLVMGetErrorMessage(LLVMErrorRef Err); | 
| 61 |  | 
| 62 | /** | 
| 63 |  * Dispose of the given error message. | 
| 64 |  */ | 
| 65 | void LLVMDisposeErrorMessage(char *ErrMsg); | 
| 66 |  | 
| 67 | /** | 
| 68 |  * Returns the type id for llvm StringError. | 
| 69 |  */ | 
| 70 | LLVMErrorTypeId LLVMGetStringErrorTypeId(void); | 
| 71 |  | 
| 72 | /** | 
| 73 |  * Create a StringError. | 
| 74 |  */ | 
| 75 | LLVMErrorRef LLVMCreateStringError(const char *ErrMsg); | 
| 76 |  | 
| 77 | /** | 
| 78 |  * @} | 
| 79 |  */ | 
| 80 |  | 
| 81 | LLVM_C_EXTERN_C_END | 
| 82 |  | 
| 83 | #endif | 
| 84 |  |