summaryrefslogtreecommitdiff
path: root/src/common/nullpo.cpp
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.cpp
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.cpp')
-rw-r--r--src/common/nullpo.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/common/nullpo.cpp b/src/common/nullpo.cpp
new file mode 100644
index 0000000..6dd2736
--- /dev/null
+++ b/src/common/nullpo.cpp
@@ -0,0 +1,66 @@
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include "nullpo.hpp"
+
+static void nullpo_info_core (const char *file, int line, const char *func,
+ const char *fmt, va_list ap);
+
+/// Null check and print format
+bool nullpo_chk_f (const char *file, int line, const char *func,
+ const void *target, const char *fmt, ...)
+{
+ va_list ap;
+
+ if (target)
+ return 0;
+
+ va_start (ap, fmt);
+ nullpo_info_core (file, line, func, fmt, ap);
+ va_end (ap);
+ return 1;
+}
+bool nullpo_chk (const char *file, int line, const char *func,
+ const void *target)
+{
+ if (target)
+ return 0;
+
+ nullpo_info_core (file, line, func, NULL, NULL);
+ return 1;
+}
+
+/// External functions
+void nullpo_info_f (const char *file, int line, const char *func,
+ const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start (ap, fmt);
+ nullpo_info_core (file, line, func, fmt, ap);
+ va_end (ap);
+}
+void nullpo_info (const char *file, int line, const char *func)
+{
+ nullpo_info_core (file, line, func, NULL, NULL);
+}
+
+/// Actual output function
+static void nullpo_info_core (const char *file, int line, const char *func,
+ const char *fmt, va_list ap) __attribute__((format(printf, 4, 0)));
+static void nullpo_info_core (const char *file, int line, const char *func,
+ const char *fmt, va_list ap)
+{
+ if (!file)
+ file = "??";
+ if (!func || !*func)
+ func = "unknown";
+
+ fprintf (stderr, "%s:%d: in func `%s': NULL pointer\n", file, line, func);
+ if (fmt && *fmt)
+ {
+ vfprintf (stderr, fmt, ap);
+ if (fmt[strlen (fmt) - 1] != '\n')
+ fputc('\n', stderr);
+ }
+}