Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.