int num_rules;
const char **symbol_names;
+ const char **param_names;
struct NFA **rules;
struct tuple *tuple_list;
fprintf (stderr, " Param values follow:\n");
for (i = 0; i < tc->num_params; i++)
- fprintf (stderr, " Param %d: 0x%p\n", i,
+ fprintf (stderr, " Param %s: 0x%p\n", tc->param_names[i],
(void *)tuple->param_vals[i].value);
}
else
if (tc == NULL)
return;
- tc->num_params = num_params;
tc->num_symbols = num_symbols;
+ tc->num_params = num_params;
tc->num_rules = num_rules;
if (num_symbols > 0)
{
tc->symbol_names = calloc (num_symbols, sizeof (const char *));
if (tc->symbol_names == NULL)
- fatal_tracecut_error ("Out of memory");
+ {
+ fatal_tracecut_error ("Out of memory");
+ return;
+ }
+ }
+
+ if (num_params > 0)
+ {
+ tc->param_names = calloc (num_params, sizeof (const char *));
+ if (tc->param_names == NULL)
+ {
+ fatal_tracecut_error ("Out of memory");
+ return;
+ }
}
if (num_rules > 0)
{
tc->rules = calloc (num_rules, sizeof (struct State *));
if (tc->rules == NULL)
- fatal_tracecut_error ("Out of memory");
+ {
+ fatal_tracecut_error ("Out of memory");
+ return;
+ }
}
}
ADVICE_FUNC void
_tc_name_param (int tc_index, int param_index, const char *param_name)
{
+ struct tracecut *tc;
+
+ tc = get_tracecut (tc_index);
+ if (tc == NULL)
+ return;
+
+ if (param_index < 0 || param_index >= tc->num_params)
+ {
+ fatal_tracecut_error ("Bad symbol index at initialization.");
+ return;
+ }
+
+ tc->param_names[param_index] = param_name;
}
ADVICE_FUNC void