diff options
Diffstat (limited to 'util.h')
-rw-r--r-- | util.h | 65 |
1 files changed, 65 insertions, 0 deletions
@@ -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_ */ |