/* * Copyright (C) 2010 Tobias Klauser * * 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 /* * 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_ */