aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dfilter/sttype-function.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dfilter/sttype-function.c')
-rw-r--r--epan/dfilter/sttype-function.c72
1 files changed, 43 insertions, 29 deletions
diff --git a/epan/dfilter/sttype-function.c b/epan/dfilter/sttype-function.c
index dd075591d2..de367d9281 100644
--- a/epan/dfilter/sttype-function.c
+++ b/epan/dfilter/sttype-function.c
@@ -13,71 +13,76 @@
#include <wsutil/ws_assert.h>
typedef struct {
- guint32 magic;
+ uint32_t magic;
df_func_def_t *funcdef;
GSList *params;
} function_t;
#define FUNCTION_MAGIC 0xe10f0f99
-static gpointer
-function_new(gpointer funcdef)
+static void *
+function_new(void *funcdef)
{
function_t *stfuncrec;
stfuncrec = g_new(function_t, 1);
stfuncrec->magic = FUNCTION_MAGIC;
- stfuncrec->funcdef = (df_func_def_t *)funcdef;
+ stfuncrec->funcdef = funcdef;
stfuncrec->params = NULL;
- return (gpointer) stfuncrec;
+ return stfuncrec;
}
-static gpointer
+static void *
function_dup(gconstpointer data)
{
- const function_t *org = (const function_t *)data;
+ const function_t *org = data;
function_t *stfuncrec;
GSList *p;
- stfuncrec = (function_t *)function_new(org->funcdef);
+ stfuncrec = function_new(org->funcdef);
for (p = org->params; p; p = p->next) {
- const stnode_t *param = (const stnode_t *)p->data;
+ const stnode_t *param = p->data;
stfuncrec->params = g_slist_append(stfuncrec->params, stnode_dup(param));
}
- return (gpointer) stfuncrec;
+ return stfuncrec;
}
static char *
-function_tostr(const void *data, gboolean pretty)
+function_tostr(const void *data, bool pretty)
{
- const function_t *stfuncrec = (const function_t *)data;
+ const function_t *stfuncrec = data;
const df_func_def_t *def = stfuncrec->funcdef;
GSList *params = stfuncrec->params;
GString *repr = g_string_new("");
ws_assert(def);
- g_string_printf(repr, "%s(", def->name);
- while (params != NULL) {
- ws_assert(params->data);
- g_string_append(repr, stnode_tostr(params->data, pretty));
- params = params->next;
- if (params != NULL) {
- g_string_append(repr, ", ");
+ if (pretty) {
+ g_string_printf(repr, "%s(", def->name);
+ while (params != NULL) {
+ ws_assert(params->data);
+ g_string_append(repr, stnode_tostr(params->data, pretty));
+ params = params->next;
+ if (params != NULL) {
+ g_string_append(repr, ", ");
+ }
}
+ g_string_append_c(repr, ')');
+ }
+ else {
+ g_string_printf(repr, "%s#%u", def->name, g_slist_length(params));
}
- g_string_append_c(repr, ')');
- return g_string_free(repr, FALSE);
+ return g_string_free(repr, false);
}
static void
-slist_stnode_free(gpointer data)
+slist_stnode_free(void *data)
{
- stnode_free((stnode_t *)data);
+ stnode_free(data);
}
void
@@ -87,9 +92,9 @@ st_funcparams_free(GSList *params)
}
static void
-function_free(gpointer value)
+function_free(void *value)
{
- function_t *stfuncrec = (function_t*)value;
+ function_t *stfuncrec = value;
ws_assert_magic(stfuncrec, FUNCTION_MAGIC);
st_funcparams_free(stfuncrec->params);
g_free(stfuncrec);
@@ -103,7 +108,7 @@ sttype_function_set_params(stnode_t *node, GSList *params)
function_t *stfuncrec;
- stfuncrec = (function_t*)stnode_data(node);
+ stfuncrec = stnode_data(node);
ws_assert_magic(stfuncrec, FUNCTION_MAGIC);
stfuncrec->params = params;
@@ -115,18 +120,28 @@ sttype_function_funcdef(stnode_t *node)
{
function_t *stfuncrec;
- stfuncrec = (function_t*)stnode_data(node);
+ stfuncrec = stnode_data(node);
ws_assert_magic(stfuncrec, FUNCTION_MAGIC);
return stfuncrec->funcdef;
}
+const char *
+sttype_function_name(stnode_t *node)
+{
+ function_t *stfuncrec;
+
+ stfuncrec = stnode_data(node);
+ ws_assert_magic(stfuncrec, FUNCTION_MAGIC);
+ return stfuncrec->funcdef->name;
+}
+
/* Get the parameters for a function stnode_t. */
GSList*
sttype_function_params(stnode_t *node)
{
function_t *stfuncrec;
- stfuncrec = (function_t*)stnode_data(node);
+ stfuncrec = stnode_data(node);
ws_assert_magic(stfuncrec, FUNCTION_MAGIC);
return stfuncrec->params;
}
@@ -137,7 +152,6 @@ sttype_register_function(void)
{
static sttype_t function_type = {
STTYPE_FUNCTION,
- "FUNCTION",
function_new,
function_free,
function_dup,