aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/include/assert.h
diff options
context:
space:
mode:
authorspicyjpeg <thatspicyjpeg@gmail.com>2023-05-11 23:42:43 +0200
committerGitHub <noreply@github.com>2023-05-11 23:42:43 +0200
commit04d7728350cbd04dd86cd894e906c98673e3f9a7 (patch)
tree08e8c7dd495d1c4c6fcf5f7ba6b4b10693dc42f6 /libpsn00b/include/assert.h
parenteaec942f56ceec9c14de5c4185a02602abadd50a (diff)
parent58a8306d24fe29d965aa8b40ddc37c3163c0a2f9 (diff)
downloadpsn00bsdk-04d7728350cbd04dd86cd894e906c98673e3f9a7.tar.gz
Merge pull request #70 from Lameguy64/v0.23-wip
Header cleanups, PCDRV, more safety checks, libc and mkpsxiso fixes (v0.23)
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