24 #define ASSERT_STTYPE_NOT_REACHED(st) \
25 ws_error("Invalid syntax node type '%s'.", sttype_name(st))
27 #define ASSERT_STNODE_OP_NOT_REACHED(op) \
28 ws_error("Invalid stnode op '%s'.", stnode_op_name(op))
49 typedef void * (*STTypeNewFunc)(
void *);
50 typedef void * (*STTypeDupFunc)(gconstpointer);
51 typedef void (*STTypeFreeFunc)(
void *);
52 typedef char* (*STTypeToStrFunc)(gconstpointer,
bool pretty);
58 STTypeNewFunc func_new;
59 STTypeFreeFunc func_free;
60 STTypeDupFunc func_dup;
61 STTypeToStrFunc func_tostr;
72 #define STFLAG_UNPARSED (1 << 0)
86 STNODE_OP_UNINITIALIZED,
102 STNODE_OP_BITWISE_AND,
103 STNODE_OP_UNARY_MINUS,
118 void sttype_register_field(
void);
119 void sttype_register_function(
void);
120 void sttype_register_number(
void);
121 void sttype_register_pointer(
void);
122 void sttype_register_set(
void);
123 void sttype_register_slice(
void);
124 void sttype_register_string(
void);
125 void sttype_register_opers(
void);
131 sttype_cleanup(
void);
138 sttype_name(sttype_id_t type);
142 stnode_op_name(stnode_op_t op);
146 stnode_new(sttype_id_t type_id,
void *data,
char *token,
df_loc_t loc);
150 stnode_new_empty(sttype_id_t type_id);
162 stnode_init(
stnode_t *node, sttype_id_t type_id,
void *data,
char *token,
df_loc_t loc);
166 stnode_replace(
stnode_t *node, sttype_id_t type_id,
void *data);
170 stnode_mutate(
stnode_t *node, sttype_id_t type_id);
210 stnode_get_flags(
stnode_t *node, uint16_t flags);
214 stnode_set_flags(
stnode_t *node, uint16_t flags);
221 stnode_tostr(
stnode_t *node,
bool pretty);
223 #define stnode_todisplay(node) stnode_tostr(node, true)
225 #define stnode_todebug(node) stnode_tostr(node, false)
228 log_node_full(
enum ws_log_level level,
229 const char *file,
int line,
const char *func,
233 log_test_full(
enum ws_log_level level,
234 const char *file,
int line,
const char *func,
238 #define log_node(node) \
239 log_node_full(LOG_LEVEL_NOISY, __FILE__, __LINE__, __func__, node, #node)
240 #define log_test(node) \
241 log_test_full(LOG_LEVEL_NOISY, __FILE__, __LINE__, __func__, node, #node)
242 #define LOG_NODE(node) \
244 if (stnode_type_id(node) == STTYPE_TEST) \
250 #define log_node(node) (void)0
251 #define log_test(node) (void)0
252 #define LOG_NODE(node) (void)0
256 dump_syntax_tree_str(
stnode_t *root);
259 log_syntax_tree(
enum ws_log_level,
stnode_t *root,
const char *msg,
char **cache_ptr);
262 #define ws_assert_magic(obj, mnum) \
265 if ((obj)->magic != (mnum)) { \
266 ws_log_full(LOG_DOMAIN_DFILTER, LOG_LEVEL_ERROR, \
267 __FILE__, __LINE__, __func__, \
268 "Magic num is 0x%08" PRIx32", " \
269 "but should be 0x%08" PRIx32, \
270 (obj)->magic, (mnum)); \
274 #define ws_assert_magic(obj, mnum) (void)0
Definition: dfilter-loc.h:16
Definition: syntax-tree.h:75
Definition: syntax-tree.h:56