Wireshark  4.3.0
The Wireshark network protocol analyzer
dfunctions.h
Go to the documentation of this file.
1 
10 #ifndef DFUNCTIONS_H
11 #define DFUNCTIONS_H
12 
13 #include <glib.h>
14 #include <epan/ftypes/ftypes.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif /* __cplusplus */
21 
22 /* Functions take any number of arguments and return 1. */
23 
24 #define dfunc_fail(dfw, node, ...) \
25  do { \
26  ws_noisy("Semantic check failed here."); \
27  dfilter_fail_throw(dfw, DF_ERROR_GENERIC, stnode_location(node), __VA_ARGS__); \
28  } while (0)
29 
30 /* The run-time logic of the dfilter function */
31 typedef bool (*DFFuncType)(GSList *stack, uint32_t arg_count, df_cell_t *retval);
32 
33 /* The semantic check for the dfilter function */
34 typedef ftenum_t (*DFSemCheckType)(dfwork_t *dfw, const char *func_name, ftenum_t lhs_ftype,
35  GSList *param_list, df_loc_t func_loc);
36 
37 /* This is a "function definition" record, holding everything
38  * we need to know about a function */
39 typedef struct {
40  const char *name;
41  DFFuncType function;
42  unsigned min_nargs;
43  unsigned max_nargs; /* 0 for no limit */
44  ftenum_t return_ftype; /* Can be FT_NONE if the function returns the same type
45  * as its arguments. */
46  DFSemCheckType semcheck_param_function;
48 
49 WS_DLL_PUBLIC
50 ftenum_t
51 df_semcheck_param(dfwork_t *dfw, const char *func_name, ftenum_t logical_ftype,
52  stnode_t *param, df_loc_t func_loc);
53 
54 void df_func_init(void);
55 
56 /* Returns false if the function name already exists. */
57 WS_DLL_PUBLIC
58 bool df_func_register(df_func_def_t *func);
59 
60 WS_DLL_PUBLIC
61 bool df_func_deregister(df_func_def_t *func);
62 
63 /* Return the function definition record for a function of named "name" */
64 WS_DLL_PUBLIC
65 df_func_def_t* df_func_lookup(const char *name);
66 
67 /* You must call g_ptr_array_unref() when you are done. */
68 WS_DLL_PUBLIC
69 GPtrArray *df_func_name_list(void);
70 
71 void df_func_cleanup(void);
72 
73 #ifdef __cplusplus
74 }
75 #endif /* __cplusplus */
76 
77 #endif
Definition: dfilter-loc.h:16
Definition: dfilter-int.h:25
Definition: dfunctions.h:39
Definition: dfilter-int.h:75
Definition: syntax-tree.h:79