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 19LLVM_C_EXTERN_C_BEGIN 20 21#define LLVMErrorSuccess 0 22 23/** 24 * Opaque reference to an error instance. Null serves as the 'success' value. 25 */ 26typedef struct LLVMOpaqueError *LLVMErrorRef; 27 28/** 29 * Error type identifier. 30 */ 31typedef const void *LLVMErrorTypeId; 32 33/** 34 * Returns the type id for the given error instance, which must be a failure 35 * value (i.e. non-null). 36 */ 37LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err); 38 39/** 40 * Dispose of the given error without handling it. This operation consumes the 41 * error, and the given LLVMErrorRef value is not usable once this call returns. 42 * Note: This method *only* needs to be called if the error is not being passed 43 * to some other consuming operation, e.g. LLVMGetErrorMessage. 44 */ 45void LLVMConsumeError(LLVMErrorRef Err); 46 47/** 48 * Returns the given string's error message. This operation consumes the error, 49 * and the given LLVMErrorRef value is not usable once this call returns. 50 * The caller is responsible for disposing of the string by calling 51 * LLVMDisposeErrorMessage. 52 */ 53char *LLVMGetErrorMessage(LLVMErrorRef Err); 54 55/** 56 * Dispose of the given error message. 57 */ 58void LLVMDisposeErrorMessage(char *ErrMsg); 59 60/** 61 * Returns the type id for llvm StringError. 62 */ 63LLVMErrorTypeId LLVMGetStringErrorTypeId(void); 64 65LLVM_C_EXTERN_C_END 66 67#endif 68