From f404d75c6050223a3cbbe9b7775700ca291ff93d Mon Sep 17 00:00:00 2001 From: Martin Michalec Date: Sun, 22 Feb 2026 06:18:01 +0300 Subject: add lex example --- examples/utils.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 examples/utils.h (limited to 'examples/utils.h') diff --git a/examples/utils.h b/examples/utils.h new file mode 100644 index 0000000..dc48a85 --- /dev/null +++ b/examples/utils.h @@ -0,0 +1,64 @@ +// examples/utils.h + +#ifndef INCLUDED_UTILS_H +#define INCLUDED_UTILS_H + +#include +#include + +#define CMMM__STRING_VIEW__STRIP_VENDOR +#define CMMM__STRING_VIEW__SHORT_NAMESPACE +#define CMMM__ARENA__STRIP_VENDOR + +#include "cmmm/string-view.h" +#include "cmmm/arena.h" + +#define NOP() do {} while (0) + +#define UNUSED(EXP) ((void) EXP) + +#define ARRAY_LENGTH(ARR) (sizeof (ARR)/sizeof (*(ARR))) + +#ifndef NDEBUG +#include +#define ASSERT assert +#else +#define ASSERT(...) NOP () +#endif + +#define STRINGIFY(ARG) #ARG +#define TO_STRING(ARG) STRINGIFY (ARG) + +#ifndef NDEBUG +#define DEBUG(FMT, ...) \ + fprintf (stderr, __FILE__ ":" TO_STRING (__LINE__) ": %s: " FMT "\n", \ + __func__ __VA_OPT__ (,) __VA_ARGS__) +#define LOG(FMT, ...) \ + fprintf (stderr, __FILE__ ":" TO_STRING (__LINE__) ": %s: " FMT "\n", \ + __func__ __VA_OPT__ (,) __VA_ARGS__) +#else +#define DEBUG(...) NOP () +#define LOG(FMT, ...) \ + fprintf (stderr, FMT "\n", __VA_OPT__ (,) __VA_ARGS__) +#endif + +#define ERROR(FMT, ...) LOG ("error: " FMT __VA_OPT__ (,) __VA_ARGS__) +#define WARNING(FMT, ...) LOG ("warning: " FMT __VA_OPT__ (,) __VA_ARGS__) +#define NOTICE(FMT, ...) LOG ("notice: " FMT __VA_OPT__ (,) __VA_ARGS__) +#define INFO(FMT, ...) LOG ("info: " FMT __VA_OPT__ (,) __VA_ARGS__) + +#ifndef NDEBUG +#define ASSERT_MSG(EXP, FMT, ...) do if (!(EXP)) { \ + DEBUG (FMT __VA_OPT__ (,) __VA_ARGS__); \ + exit (EXIT_FAILURE); \ + } while (0) +#else +#define ASSERT_MSG(EXP, FMT, ...) NOP () +#endif + +struct cmmm__sv mmap_whole (int fd); +struct cmmm__sv read_until_eof (ARENA, int fd); + +#endif // INCLUDED_UTILS_H + +// examples/utils.c ends here -- cgit v1.3