summaryrefslogtreecommitdiffstats
path: root/llvm/include/llvm-c/Error.h
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-08-15 18:42:11 +0000
committerLang Hames <lhames@gmail.com>2018-08-15 18:42:11 +0000
commit00fb14da274efc35afa4eba6019050bbcf605ead (patch)
tree4bc31d4a6a20d3091c7406ba15bafcca3d3bfc5f /llvm/include/llvm-c/Error.h
parent5222cb601b9a04df93cc3603ede80cc0e3dc9940 (diff)
downloadbcm5719-llvm-00fb14da274efc35afa4eba6019050bbcf605ead.tar.gz
bcm5719-llvm-00fb14da274efc35afa4eba6019050bbcf605ead.zip
[Support] Add a basic C API for llvm::Error.
Summary: The C-API supports consuming errors, converting an error to a string error message, and querying an error's type. Other LLVM C APIs that wish to use llvm::Error can supply error-type-id checkers and custom error-to-structured-type converters for any custom errors they provide. Reviewers: bogner, zturner, labath, dblaikie Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D50716 llvm-svn: 339802
Diffstat (limited to 'llvm/include/llvm-c/Error.h')
-rw-r--r--llvm/include/llvm-c/Error.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/llvm/include/llvm-c/Error.h b/llvm/include/llvm-c/Error.h
new file mode 100644
index 00000000000..00714ec950e
--- /dev/null
+++ b/llvm/include/llvm-c/Error.h
@@ -0,0 +1,65 @@
+/*===------- llvm-c/Error.h - llvm::Error class C Interface -------*- C -*-===*\
+|* *|
+|* The LLVM Compiler Infrastructure *|
+|* *|
+|* This file is distributed under the University of Illinois Open Source *|
+|* License. See LICENSE.TXT for details. *|
+|* *|
+|*===----------------------------------------------------------------------===*|
+|* *|
+|* This file defines the C interface to LLVM's Error class. *|
+|* *|
+\*===----------------------------------------------------------------------===*/
+
+#ifndef LLVM_C_ERROR_H
+#define LLVM_C_ERROR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Opaque reference to an error instance. Null serves as the 'success' value.
+ */
+typedef struct LLVMOpaqueError *LLVMErrorRef;
+
+/**
+ * Error type identifier.
+ */
+typedef const void *LLVMErrorTypeId;
+
+/**
+ * Returns the type id for the given error instance, which must be a failure
+ * value (i.e. non-null).
+ */
+LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err);
+
+/**
+ * Dispose of the given error without handling it. This operation consumes the
+ * error, and the given LLVMErrorRef value is not usable once this call returns.
+ * Note: This method *only* needs to be called if the error is not being passed
+ * to some other consuming operation, e.g. LLVMGetErrorMessage.
+ */
+void LLVMConsumeError(LLVMErrorRef Err);
+
+/**
+ * Returns the given string's error message. This operation consumes the error,
+ * and the given LLVMErrorRef value is not usable once this call returns.
+ */
+char *LLVMGetErrorMessage(LLVMErrorRef Err);
+
+/**
+ * Dispose of the given error message.
+ */
+void LLVMDisposeErrorMessage(char *ErrMsg);
+
+/**
+ * Returns the type id for llvm StringError.
+ */
+LLVMErrorTypeId LLVMGetStringErrorTypeId();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
OpenPOWER on IntegriCloud