28 #define ASSERT_STTYPE_NOT_REACHED(st) \
29 ws_error("Invalid syntax node type '%s'.", sttype_name(st))
31 #define ASSERT_STNODE_OP_NOT_REACHED(op) \
32 ws_error("Invalid stnode op '%s'.", stnode_op_name(op))
53 typedef void * (*STTypeNewFunc)(
void *);
54 typedef void * (*STTypeDupFunc)(gconstpointer);
55 typedef void (*STTypeFreeFunc)(
void *);
56 typedef char* (*STTypeToStrFunc)(gconstpointer,
bool pretty);
62 STTypeNewFunc func_new;
63 STTypeFreeFunc func_free;
64 STTypeDupFunc func_dup;
65 STTypeToStrFunc func_tostr;
76 #define STFLAG_UNPARSED (1 << 0)
90 STNODE_OP_UNINITIALIZED,
106 STNODE_OP_BITWISE_AND,
107 STNODE_OP_UNARY_MINUS,
122 void sttype_register_field(
void);
123 void sttype_register_function(
void);
124 void sttype_register_number(
void);
125 void sttype_register_pointer(
void);
126 void sttype_register_set(
void);
127 void sttype_register_slice(
void);
128 void sttype_register_string(
void);
129 void sttype_register_opers(
void);
135 sttype_cleanup(
void);
142 sttype_name(sttype_id_t type);
146 stnode_op_name(stnode_op_t op);
150 stnode_new(sttype_id_t type_id,
void *data,
char *token,
df_loc_t loc);
154 stnode_new_empty(sttype_id_t type_id);
166 stnode_init(
stnode_t *node, sttype_id_t type_id,
void *data,
char *token,
df_loc_t loc);
170 stnode_replace(
stnode_t *node, sttype_id_t type_id,
void *data);
174 stnode_mutate(
stnode_t *node, sttype_id_t type_id);
214 stnode_get_flags(
stnode_t *node, uint16_t flags);
218 stnode_set_flags(
stnode_t *node, uint16_t flags);
225 stnode_tostr(
stnode_t *node,
bool pretty);
227 #define stnode_todisplay(node) stnode_tostr(node, true)
229 #define stnode_todebug(node) stnode_tostr(node, false)
232 log_node_full(
enum ws_log_level level,
233 const char *file,
int line,
const char *func,
237 log_test_full(
enum ws_log_level level,
238 const char *file,
int line,
const char *func,
242 #define log_node(node) \
243 log_node_full(LOG_LEVEL_NOISY, __FILE__, __LINE__, __func__, node, #node)
244 #define log_test(node) \
245 log_test_full(LOG_LEVEL_NOISY, __FILE__, __LINE__, __func__, node, #node)
246 #define LOG_NODE(node) \
248 if (stnode_type_id(node) == STTYPE_TEST) \
254 #define log_node(node) (void)0
255 #define log_test(node) (void)0
256 #define LOG_NODE(node) (void)0
260 dump_syntax_tree_str(
stnode_t *root);
263 log_syntax_tree(
enum ws_log_level,
stnode_t *root,
const char *msg,
char **cache_ptr);
266 #define ws_assert_magic(obj, mnum) \
269 if ((obj)->magic != (mnum)) { \
270 ws_log_full(LOG_DOMAIN_DFILTER, LOG_LEVEL_ERROR, \
271 __FILE__, __LINE__, __func__, \
272 "Magic num is 0x%08" PRIx32", " \
273 "but should be 0x%08" PRIx32, \
274 (obj)->magic, (mnum)); \
278 #define ws_assert_magic(obj, mnum) (void)0
Definition: dfilter-loc.h:16
Definition: syntax-tree.h:79
Definition: syntax-tree.h:60