flex: Fix -Wsign-compare warnings in generated scanners.
[dragonfly.git] / lib / libevtr / internal.h
1 #ifndef _EVTR_INTERNAL_H_
2 #define _EVTR_INTERNAL_H_
3
4 #include <sys/queue.h>
5 #include "evtr.h"
6
7 extern unsigned evtr_debug;
8
9 #define DEFINE_DEBUG_FLAG(nam, chr)             \
10         nam = 1 << (chr - 'a')
11
12 enum debug_flags {
13         DEFINE_DEBUG_FLAG(IO, 'i'),
14         DEFINE_DEBUG_FLAG(DS, 't'),     /* data structures */
15         DEFINE_DEBUG_FLAG(LEX, 'l'),
16         DEFINE_DEBUG_FLAG(PARSE, 'p'),
17         DEFINE_DEBUG_FLAG(MISC, 'm'),
18 };
19
20 #define printd(subsys, ...)                             \
21         do {                                            \
22                 if (evtr_debug & (subsys)) {    \
23                         fprintf(stderr, "%s:", #subsys);        \
24                         fprintf(stderr, __VA_ARGS__);   \
25                 }                                       \
26         } while (0)
27
28 #define printw(...)                             \
29         do {                                    \
30         fprintf(stderr, "Warning: ");           \
31         fprintf(stderr, __VA_ARGS__);           \
32         } while(0)
33
34
35 struct ktrfmt_parse_ctx {
36         struct symtab *symtab;
37         struct evtr_variable *var;
38         struct evtr_variable_value *val;
39         evtr_event_t ev;
40         char *errbuf;
41         size_t errbufsz;
42         int err;
43 };
44
45 TAILQ_HEAD(evtr_value_list, evtr_variable_value);
46 typedef struct evtr_value_list *evtr_value_list_t;
47
48 struct symtab *symtab_new(void);
49 struct evtr_variable * symtab_find(const struct symtab *, const char *);
50 int symtab_insert(struct symtab *, const char *, struct evtr_variable *);
51 void symtab_destroy(struct symtab *);
52
53
54 int parse_string(evtr_event_t, struct symtab *, const char *, char *, size_t);
55 int parse_var(const char *, struct symtab *, struct evtr_variable **,
56               char *, size_t);
57
58 struct hashtab;
59 struct hashentry;
60 struct hashtab * hash_new(void);
61 int hash_find(const struct hashtab *, uintptr_t, uintptr_t *);
62 struct hashentry * hash_insert(struct hashtab *, uintptr_t, uintptr_t);
63
64 void evtr_variable_value_list_destroy(evtr_value_list_t);
65
66
67 #endif /* _EVTR_INTERNAL_H_ */