aboutsummaryrefslogtreecommitdiff
path: root/compute_kernel_writer/include/ckw/Error.h
diff options
context:
space:
mode:
authorViet-Hoa Do <viet-hoa.do@arm.com>2023-05-30 09:34:32 +0100
committerViet-Hoa Do <viet-hoa.do@arm.com>2023-06-27 09:42:51 +0000
commitbd4f6b9ed37ed7a222e36ce6823ba96396f60deb (patch)
treed1117a182d2d5fe8d2cef1ed631e3723b2aca354 /compute_kernel_writer/include/ckw/Error.h
parent8c49f16e5909a9bd5dc6e68638d2e2d8acc2fc66 (diff)
downloadComputeLibrary-bd4f6b9ed37ed7a222e36ce6823ba96396f60deb.tar.gz
Compute kernel writer API and prototype
* Add the public API for compute kernel writer. * Use the prototype as the implementation of the public API. Resolves: COMPMID-5790 Signed-off-by: Viet-Hoa Do <viet-hoa.do@arm.com> Change-Id: I9d80e15325e1d953feb87c1f2eb61a587bb9ab5e Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9814 Reviewed-by: Jakub Sujak <jakub.sujak@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Benchmark: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'compute_kernel_writer/include/ckw/Error.h')
-rw-r--r--compute_kernel_writer/include/ckw/Error.h66
1 files changed, 55 insertions, 11 deletions
diff --git a/compute_kernel_writer/include/ckw/Error.h b/compute_kernel_writer/include/ckw/Error.h
index 996893823e..8c4853722b 100644
--- a/compute_kernel_writer/include/ckw/Error.h
+++ b/compute_kernel_writer/include/ckw/Error.h
@@ -21,11 +21,12 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-#ifndef COMPUTE_KERNEL_WRITER_INCLUDE_CKW_ERROR_H
-#define COMPUTE_KERNEL_WRITER_INCLUDE_CKW_ERROR_H
-#include <string>
+#ifndef CKW_INCLUDE_CKW_ERROR_H
+#define CKW_INCLUDE_CKW_ERROR_H
+
#include <stdexcept>
+#include <string>
namespace ckw
{
@@ -44,16 +45,59 @@ std::string create_error_msg(const std::string &file, const std::string &func, c
*
* @param[in] msg Message to display.
*/
-#define COMPUTE_KERNEL_WRITER_ERROR_ON_MSG(msg) \
- do \
- { \
- const std::string arg0(__FILE__); \
- const std::string arg1(__func__); \
- const std::string arg2(std::to_string(__LINE__)); \
- const std::string arg3(msg); \
+#define COMPUTE_KERNEL_WRITER_ERROR_ON_MSG(msg) \
+ do \
+ { \
+ const std::string arg0(__FILE__); \
+ const std::string arg1(__func__); \
+ const std::string arg2(std::to_string(__LINE__)); \
+ const std::string arg3(msg); \
std::runtime_error(create_error_msg(arg0, arg1, arg2, arg3)); \
} while(false)
+/** If the condition is not met, throw an std::runtime_error with the specified message.
+ *
+ * @param[in] cond The condition that is expected to be true.
+ * @param[in] msg The error message when the condition is not met.
+ */
+#define CKW_ASSERT_MSG(cond, msg) \
+ do \
+ { \
+ if(!(cond)) \
+ { \
+ throw ::std::runtime_error(msg); \
+ } \
+ } while(false)
+
+/** If the condition is not met, throw an std::runtime_error.
+ *
+ * @param[in] cond The condition that is expected to be true.
+ */
+#define CKW_ASSERT(cond) CKW_ASSERT_MSG(cond, #cond)
+
+/** If the precondition is met but the consequence is not met, throw an std::runtime_error.
+ *
+ * @param[in] precond The condition if is met requires the consequence must also be met.
+ * @param[in] cond The condition that is expected to be true if the precondition is true.
+ */
+#define CKW_ASSERT_IF(precond, cond) \
+ CKW_ASSERT_MSG(!(precond) || ((precond) && (cond)), #precond " |-> " #cond)
+
+/** Mark the variables as unused.
+ *
+ * @param[in] ... Variables which are unused.
+ */
+#define CKW_UNUSED(...) ::ckw::ignore_unused(__VA_ARGS__) // NOLINT
+
+/** Mark the variables as unused.
+ *
+ * @param[in] ... Variables which are unused.
+ */
+template <typename... T>
+inline void ignore_unused(T &&...)
+{
+}
+
} // namespace ckw
-#endif /* COMPUTE_KERNEL_WRITER_INCLUDE_CKW_ERROR_H */
+#endif // CKW_INCLUDE_CKW_ERROR_H