summaryrefslogtreecommitdiff
path: root/src/common/nullpo.hpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2012-08-30 16:16:25 -0700
committerBen Longbons <b.r.longbons@gmail.com>2012-08-30 17:03:31 -0700
commit41974ae5265fbc23a06f276f9e008d5dad020e0b (patch)
tree9d595215172e87e2d83b74f7bf3430b3040e780e /src/common/nullpo.hpp
parent21742909143df9159b2401c3e2a39cc0b2bad620 (diff)
downloadtmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.tar.gz
tmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.tar.bz2
tmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.tar.xz
tmwa-41974ae5265fbc23a06f276f9e008d5dad020e0b.zip
Rename files for C++ conversion. Does not compile.
After updating, you can remove these files, as shown in 'git status': Untracked files: (use "git add <file>..." to include in what will be committed) src/map/magic-interpreter-lexer.c src/map/magic-interpreter-parser.c src/map/magic-interpreter-parser.h
Diffstat (limited to 'src/common/nullpo.hpp')
-rw-r--r--src/common/nullpo.hpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/common/nullpo.hpp b/src/common/nullpo.hpp
new file mode 100644
index 0000000..7aff691
--- /dev/null
+++ b/src/common/nullpo.hpp
@@ -0,0 +1,61 @@
+/// return wrappers for unexpected NULL pointers
+#ifndef NULLPO_HPP
+#define NULLPO_HPP
+/// Comment this out to live dangerously
+# define NULLPO_CHECK
+
+/// All functions print to standard error (was: standard output)
+/// nullpo_ret(cond) - return 0 if given pointer is NULL
+/// nullpo_retv(cond) - just return (function returns void)
+/// nullpo_retr(rv, cond) - return given value instead
+/// the _f variants take a printf-format string and arguments
+
+# ifdef NULLPO_CHECK
+# define NLP_MARK __FILE__, __LINE__, __func__
+# define nullpo_ret(t) \
+ if (nullpo_chk(NLP_MARK, t)) \
+ return 0;
+# define nullpo_retv(t) \
+ if (nullpo_chk(NLP_MARK, t)) \
+ return;
+# define nullpo_retr(ret, t) \
+ if (nullpo_chk(NLP_MARK, t)) \
+ return ret;
+# define nullpo_ret_f(t, fmt, ...) \
+ if (nullpo_chk_f(NLP_MARK, t, fmt, ##__VA_ARGS__)) \
+ return 0;
+# define nullpo_retv_f(t, fmt, ...) \
+ if (nullpo_chk_f(NLP_MARK, t, fmt, ##__VA_ARGS__)) \
+ return;
+# define nullpo_retr_f(ret, t, fmt, ...) \
+ if (nullpo_chk_f(NLP_MARK, t, fmt, ##__VA_ARGS__)) \
+ return ret;
+# else // NULLPO_CHECK
+# define nullpo_ret(t) t;
+# define nullpo_retv(t) t;
+# define nullpo_retr(ret, t) t;
+# define nullpo_ret_f(t, fmt, ...) t;
+# define nullpo_retv_f(t, fmt, ...) t;
+# define nullpo_retr_f(ret, t, fmt, ...) t;
+# endif // NULLPO_CHECK
+
+# include "sanity.hpp"
+
+/// Used by macros in this header
+bool nullpo_chk (const char *file, int line, const char *func,
+ const void *target);
+
+/// Used by macros in this header
+bool nullpo_chk_f (const char *file, int line, const char *func,
+ const void *target, const char *fmt, ...)
+ __attribute__ ((format (printf, 5, 6)));
+
+/// Used only by map/battle.c
+void nullpo_info (const char *file, int line, const char *func);
+
+/// Not used
+void nullpo_info_f (const char *file, int line, const char *func,
+ const char *fmt, ...)
+ __attribute__ ((format (printf, 4, 5)));
+
+#endif // NULLPO_HPP