summaryrefslogtreecommitdiff
path: root/util.h
diff options
context:
space:
mode:
Diffstat (limited to 'util.h')
-rw-r--r--util.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/util.h b/util.h
new file mode 100644
index 0000000..92b9621
--- /dev/null
+++ b/util.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
+ *
+ * This file is part of nios2sim-ng.
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+
+#ifndef _UTIL_H_
+#define _UTIL_H_
+
+#include <string.h>
+
+/*
+ * Memory allocation
+ */
+
+extern void *zalloc(const size_t size);
+
+/*
+ * String handling and manipulation
+ */
+
+/**
+ * Check whether two strings match exactly.
+ *
+ * @param ctx the reference string (usually a defined constant or string under
+ * the programs control)
+ * @param arg the string to match against the reference string (usually the
+ * user-supplied string)
+ * @return true if the strings match
+ */
+static inline bool xstrmatch(const char *ctx, const char *arg)
+{
+ size_t len = strlen(ctx);
+ return (strlen(arg) == len && strncmp(arg, ctx, len) == 0);
+}
+
+/**
+ * Check whether a string is empty (either NULL or empty string).
+ *
+ * @param str string to check for emptiness
+ * @return true if the string is empty
+ */
+static inline bool xstrisempty(const char *str)
+{
+ return ((str == NULL) || (xstrmatch("", str)));
+}
+
+
+/*
+ * Stringification macro (taken from Linux Kernel source code)
+ */
+
+/* Indirect stringification. Doing two levels allows the parameter to be a
+ * macro itself. For example, compile with -DFOO=bar, __stringify(FOO)
+ * converts to "bar".
+ */
+
+#define __stringify_1(x...) #x
+#define __stringify(x...) __stringify_1(x)
+
+#endif /* _UTIL_H_ */