| // Copyright 2019 The IREE Authors |
| // |
| // Licensed under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| #ifndef IREE_BINDINGS_PYTHON_IREE_COMMON_STATUS_UTILS_H_ |
| #define IREE_BINDINGS_PYTHON_IREE_COMMON_STATUS_UTILS_H_ |
| |
| #include "iree/base/api.h" |
| #include "nanobind/nanobind.h" |
| |
| namespace iree { |
| namespace python { |
| |
| // Raises a value error with the given message. |
| // Correct usage: |
| // throw RaiseValueError(PyExc_ValueError, "Foobar'd"); |
| nanobind::python_error RaisePyError(PyObject* exc_class, const char* message); |
| |
| // Raises a value error with the given message. |
| // Correct usage: |
| // throw RaiseValueError("Foobar'd"); |
| inline nanobind::python_error RaiseValueError(const char* message) { |
| return RaisePyError(PyExc_ValueError, message); |
| } |
| |
| std::string ApiStatusToString(iree_status_t status); |
| |
| nanobind::python_error ApiStatusToPyExc(iree_status_t status, |
| const char* message); |
| |
| inline void CheckApiStatus(iree_status_t status, const char* message) { |
| if (iree_status_is_ok(status)) { |
| return; |
| } |
| throw ApiStatusToPyExc(status, message); |
| } |
| |
| inline void CheckApiNotNull(const void* p, const char* message) { |
| if (!p) { |
| throw RaiseValueError(message); |
| } |
| } |
| |
| } // namespace python |
| } // namespace iree |
| |
| #endif // IREE_BINDINGS_PYTHON_IREE_COMMON_STATUS_UTILS_H_ |