mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 06:43:03 +00:00
Use the new code_props interface for destructors and printers.
* src/symtab.h (symbol, semantic_type): Remove destructor_location and printer_location members, and change the type of the destructor and printer members to code_props. (symbol_destructor_set, symbol_destructor_get, symbol_printer_set, symbol_printer_get, semantic_type_destructor_set, semantic_type_printer_set, default_tagged_destructor_set, default_tagless_destructor_set, default_tagged_printer_set, default_tagless_printer_set): Use code_props in arguments and return types in place of char const * and location. (symbol_destructor_location_get, symbol_printer_location_get): Remove since the locations are now contained in the return of symbol_destructor_get and symbol_printer_get. * src/output.c (symbol_destructors_output, symbol_printers_output): Replace with... (symbol_code_props_output): ... this to eliminate duplicate code. (output_skeleton): Update to use symbol_code_props_output. * src/reader.c (symbol_should_be_used): Update use of symbol_destructor_get. * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set): Update uses of the various _destructor_set and _printer_set functions. * src/symtab.c: (default_tagged_destructor_location, default_tagless_destructor_location, default_tagged_printer_location, default_tagless_printer_location): Remove since we... (default_tagged_destructor, default_tagless_destructor, default_tagged_printer, default_tagless_printer): ... change the type of these to code_props. (symbol_new, semantic_type_new, symbol_destructor_set, semantic_type_destructor_set, symbol_destructor_get, symbol_printer_set, semantic_type_printer_set, symbol_printer_get, symbol_check_alias_consistency, default_tagged_destructor_set, default_tagless_destructor_set, default_tagged_printer_set, default_tagless_printer_set): Update. (symbol_destructor_location_get, symbol_printer_location_get): Remove. (SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for code_props members. (symbol_print): Use SYMBOL_CODE_PRINT.
This commit is contained in:
@@ -207,27 +207,25 @@ symbol_list_n_type_name_get (symbol_list *l, location loc, int n)
|
||||
|
||||
|
||||
void
|
||||
symbol_list_destructor_set (symbol_list *node, char const *code,
|
||||
location loc)
|
||||
symbol_list_destructor_set (symbol_list *node, char const *code, location loc)
|
||||
{
|
||||
code_props destructor;
|
||||
code_props_symbol_action_init (&destructor, code, loc);
|
||||
code_props_translate_code (&destructor);
|
||||
code = destructor.code;
|
||||
switch (node->content_type)
|
||||
{
|
||||
case SYMLIST_SYMBOL:
|
||||
symbol_destructor_set (node->content.sym, code, loc);
|
||||
symbol_destructor_set (node->content.sym, &destructor);
|
||||
break;
|
||||
case SYMLIST_TYPE:
|
||||
semantic_type_destructor_set (
|
||||
semantic_type_get (node->content.type_name), code, loc);
|
||||
semantic_type_get (node->content.type_name), &destructor);
|
||||
break;
|
||||
case SYMLIST_DEFAULT_TAGGED:
|
||||
default_tagged_destructor_set (code, loc);
|
||||
default_tagged_destructor_set (&destructor);
|
||||
break;
|
||||
case SYMLIST_DEFAULT_TAGLESS:
|
||||
default_tagless_destructor_set (code, loc);
|
||||
default_tagless_destructor_set (&destructor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -238,21 +236,20 @@ symbol_list_printer_set (symbol_list *node, char const *code, location loc)
|
||||
code_props printer;
|
||||
code_props_symbol_action_init (&printer, code, loc);
|
||||
code_props_translate_code (&printer);
|
||||
code = printer.code;
|
||||
switch (node->content_type)
|
||||
{
|
||||
case SYMLIST_SYMBOL:
|
||||
symbol_printer_set (node->content.sym, code, loc);
|
||||
symbol_printer_set (node->content.sym, &printer);
|
||||
break;
|
||||
case SYMLIST_TYPE:
|
||||
semantic_type_printer_set (
|
||||
semantic_type_get (node->content.type_name), code, loc);
|
||||
semantic_type_get (node->content.type_name), &printer);
|
||||
break;
|
||||
case SYMLIST_DEFAULT_TAGGED:
|
||||
default_tagged_printer_set (code, loc);
|
||||
default_tagged_printer_set (&printer);
|
||||
break;
|
||||
case SYMLIST_DEFAULT_TAGLESS:
|
||||
default_tagless_printer_set (code, loc);
|
||||
default_tagless_printer_set (&printer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user