| Wireshark 4.7.0 The Wireshark network protocol analyzer

Loading...
Searching...
No Matches
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>
15#include <epan/dfilter/syntax-tree.h>
16#include <epan/dfilter/dfilter-int.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;
47} df_func_def_t;
48
49WS_DLL_PUBLIC
50ftenum_t
51df_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. */
57WS_DLL_PUBLIC
58 bool df_func_register(df_func_def_t *func);
59
60WS_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" */
64WS_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. */
68WS_DLL_PUBLIC
69GPtrArray *df_func_name_list(void);
70
71 void df_func_cleanup(void);
72
73#ifdef __cplusplus
74}
75#endif /* __cplusplus */
76
77#endif
dfilter-int.h
ftypes.h
_dfilter_loc
Definition dfilter-loc.h:16
df_cell_t
Definition dfilter-int.h:25
df_func_def_t
Definition dfunctions.h:39
dfwork_t
Definition dfilter-int.h:76
stnode
Definition syntax-tree.h:78
syntax-tree.h