1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Lists of symbols for Bison
2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2002, 2005-2007, 2009-2012 Free Software Foundation,
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Inc.
5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   This file is part of Bison, the GNU Compiler Compiler.
7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software: you can redistribute it and/or modify
9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   it under the terms of the GNU General Public License as published by
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation, either version 3 of the License, or
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   (at your option) any later version.
12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   but WITHOUT ANY WARRANTY; without even the implied warranty of
15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   GNU General Public License for more details.
17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   You should have received a copy of the GNU General Public License
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <config.h>
22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "system.h"
23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "complain.h"
25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "symlist.h"
26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*--------------------------------------.
29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Create a list containing SYM at LOC.  |
30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`--------------------------------------*/
31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbol_list *
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_sym_new (symbol *sym, location loc)
34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  symbol_list *res = xmalloc (sizeof *res);
36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->content_type = SYMLIST_SYMBOL;
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->content.sym = sym;
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->location = res->sym_loc = loc;
40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  res->midrule = NULL;
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->midrule_parent_rule = NULL;
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->midrule_parent_rhs_index = 0;
44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  code_props_none_init (&res->action_props);
46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  res->ruleprec = NULL;
48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  res->dprec = 0;
49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  res->merger = 0;
50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->named_ref = NULL;
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->next = NULL;
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return res;
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*--------------------------------------------.
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Create a list containing TYPE_NAME at LOC.  |
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang`--------------------------------------------*/
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list *
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_type_new (uniqstr type_name, location loc)
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *res = xmalloc (sizeof *res);
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->content_type = SYMLIST_TYPE;
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->content.type_name = type_name;
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->location = res->sym_loc = loc;
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->named_ref = NULL;
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->next = NULL;
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return res;
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*----------------------------------------.
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Create a list containing a <*> at LOC.  |
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang`----------------------------------------*/
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list *
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_default_tagged_new (location loc)
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *res = xmalloc (sizeof *res);
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->content_type = SYMLIST_DEFAULT_TAGGED;
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->location = res->sym_loc = loc;
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->named_ref = NULL;
90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  res->next = NULL;
91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  return res;
93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*---------------------------------------.
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Create a list containing a <> at LOC.  |
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang`---------------------------------------*/
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list *
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_default_tagless_new (location loc)
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *res = xmalloc (sizeof *res);
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->content_type = SYMLIST_DEFAULT_TAGLESS;
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->location = res->sym_loc = loc;
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->named_ref = NULL;
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  res->next = NULL;
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return res;
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*-----------------------------------------------------------------------.
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Print this list, for which every content_type must be SYMLIST_SYMBOL.  |
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang`-----------------------------------------------------------------------*/
117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_syms_print (const symbol_list *l, FILE *f)
120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (/* Nothing. */; l && l->content.sym; l = l->next)
122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      symbol_print (l->content.sym, f);
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      fprintf (stderr, l->action_props.is_value_used ? " used" : " unused");
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (l && l->content.sym)
126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	fprintf (f, ", ");
127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*---------------------------.
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Prepend NODE to the LIST.  |
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang`---------------------------*/
134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbol_list *
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_prepend (symbol_list *list, symbol_list *node)
137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  node->next = list;
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return node;
140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*-----------------------------------------------.
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Free the LIST, but not the items it contains.  |
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang`-----------------------------------------------*/
146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbol_list_free (symbol_list *list)
149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  symbol_list *node, *next;
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (node = list; node; node = next)
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      next = node->next;
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      named_ref_free (node->named_ref);
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      free (node);
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*--------------------.
161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Return its length.  |
162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`--------------------*/
163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wangint
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_length (symbol_list const *l)
166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  int res = 0;
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  for (/* Nothing. */;
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       l && !(l->content_type == SYMLIST_SYMBOL && l->content.sym == NULL);
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       l = l->next)
171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    ++res;
172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  return res;
173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*------------------------------.
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang| Get item N in symbol list L.  |
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang`------------------------------*/
179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbol_list *
181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbol_list_n_get (symbol_list *l, int n)
182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  int i;
184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (n < 0)
186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    return NULL;
187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  for (i = 0; i < n; ++i)
189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      l = l->next;
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      if (l == NULL
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang          || (l->content_type == SYMLIST_SYMBOL && l->content.sym == NULL))
193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project	return NULL;
194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  return l;
197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*--------------------------------------------------------------.
201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Get the data type (alternative in the union) of the value for |
202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| symbol N in symbol list L.                                    |
203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`--------------------------------------------------------------*/
204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuniqstr
206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbol_list_n_type_name_get (symbol_list *l, location loc, int n)
207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  l = symbol_list_n_get (l, n);
209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project  if (!l)
210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    {
211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      complain_at (loc, _("invalid $ value: $%d"), n);
212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project      return NULL;
213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    }
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  aver (l->content_type == SYMLIST_SYMBOL);
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return l->content.sym->type_name;
216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wangbool
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_null (symbol_list *node)
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return !node ||
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    (node->content_type == SYMLIST_SYMBOL && !(node->content.sym));
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_destructor_set (symbol_list *node, code_props const *destructor)
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  switch (node->content_type)
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_SYMBOL:
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        symbol_destructor_set (node->content.sym, destructor);
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_TYPE:
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        semantic_type_destructor_set (
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          semantic_type_get (node->content.type_name), destructor);
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_DEFAULT_TAGGED:
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        default_tagged_destructor_set (destructor);
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_DEFAULT_TAGLESS:
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang        default_tagless_destructor_set (destructor);
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wangsymbol_list_printer_set (symbol_list *node, code_props const *printer)
248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  switch (node->content_type)
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_SYMBOL:
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        symbol_printer_set (node->content.sym, printer);
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_TYPE:
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang        semantic_type_printer_set (
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          semantic_type_get (node->content.type_name), printer);
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_DEFAULT_TAGGED:
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        default_tagged_printer_set (printer);
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      case SYMLIST_DEFAULT_TAGLESS:
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang        default_tagless_printer_set (printer);
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        break;
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }
265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}
266