aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include/assert.h
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/include/assert.h')
-rw-r--r--libpsn00b/include/assert.h34
1 files changed, 26 insertions, 8 deletions
diff --git a/libpsn00b/include/assert.h b/libpsn00b/include/assert.h
index 1b2bda2..8f8df74 100644
--- a/libpsn00b/include/assert.h
+++ b/libpsn00b/include/assert.h
@@ -1,13 +1,12 @@
/*
* PSn00bSDK assert macro and internal logging
- * (C) 2022 spicyjpeg - MPL licensed
+ * (C) 2022-2023 spicyjpeg - MPL licensed
*
- * Note that the _sdk_log() macro is used internally by PSn00bSDK to output
- * debug messages and warnings.
+ * The _sdk_*() macros are used internally by PSn00bSDK to output messages when
+ * building in debug mode.
*/
-#ifndef __ASSERT_H
-#define __ASSERT_H
+#pragma once
#include <stdio.h>
@@ -25,6 +24,9 @@ void _assert_abort(const char *file, int line, const char *expr);
#define assert(expr)
#define _sdk_log(fmt, ...)
+#define _sdk_assert(expr, fmt, ...)
+#define _sdk_validate_args_void(expr)
+#define _sdk_validate_args(expr, ret)
#else
@@ -32,11 +34,27 @@ void _assert_abort(const char *file, int line, const char *expr);
((expr) ? ((void) 0) : _assert_abort(__FILE__, __LINE__, #expr))
#ifdef SDK_LIBRARY_NAME
-#define _sdk_log(fmt, ...) printf(SDK_LIBRARY_NAME ": " fmt, ##__VA_ARGS__)
+#define _sdk_log(fmt, ...) \
+ printf(SDK_LIBRARY_NAME ": " fmt __VA_OPT__(,) __VA_ARGS__)
#else
-#define _sdk_log(fmt, ...) printf(fmt, ##__VA_ARGS__)
+#define _sdk_log(fmt, ...) \
+ printf(fmt __VA_OPT__(,) __VA_ARGS__)
#endif
-#endif
+#define _sdk_assert(expr, ret, fmt, ...) \
+ if (!(expr)) { \
+ _sdk_log(fmt, __VA_ARGS__); \
+ return ret; \
+ }
+#define _sdk_validate_args_void(expr) \
+ if (!(expr)) { \
+ _sdk_log("invalid args to %s() (%s)\n", __func__, #expr); \
+ return; \
+ }
+#define _sdk_validate_args(expr, ret) \
+ if (!(expr)) { \
+ _sdk_log("invalid args to %s() (%s)\n", __func__, #expr); \
+ return ret; \
+ }
#endif