/[m4]/m4/m4/utility.c
ViewVC logotype

Diff of /m4/m4/utility.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by gary, Sat Sep 1 16:10:40 2001 UTC revision 1.10 by gary, Sat Sep 1 20:05:27 2001 UTC
# Line 41  int sync_output = 0; Line 41  int sync_output = 0;
41  /* Debug (-d[flags]).  */  /* Debug (-d[flags]).  */
42  int debug_level = 0;  int debug_level = 0;
43    
 /* Hash table size (should be a prime) (-Hsize).  */  
 int hash_table_size = HASHMAX;  
   
44  /* Disable GNU extensions (-G).  */  /* Disable GNU extensions (-G).  */
45  int no_gnu_extensions = 0;  int no_gnu_extensions = 0;
46    
# Line 84  m4_string ecomm; Line 81  m4_string ecomm;
81  m4_token_data_t  m4_token_data_t
82  m4_token_data_type (m4_token_data *name)  m4_token_data_type (m4_token_data *name)
83  {  {
84      return M4_TOKEN_DATA_TYPE(name);    return M4_TOKEN_DATA_TYPE(name);
85  }  }
86    
87  char *  char *
88  m4_token_data_text (m4_token_data *name)  m4_token_data_text (m4_token_data *name)
89  {  {
90      return M4_TOKEN_DATA_TEXT(name);    return M4_TOKEN_DATA_TEXT(name);
91  }  }
92    
93  m4_builtin_func *  m4_builtin_func *
94  m4_token_data_func (m4_token_data *name)  m4_token_data_func (m4_token_data *name)
95  {  {
96      return M4_TOKEN_DATA_FUNC(name);    return M4_TOKEN_DATA_FUNC(name);
97  }  }
98    
99  boolean  boolean
100  m4_token_data_func_traced (m4_token_data *name)  m4_token_data_func_traced (m4_token_data *name)
101  {  {
102      return M4_TOKEN_DATA_FUNC_TRACED(name);    return M4_TOKEN_DATA_FUNC_TRACED(name);
103  }  }
104    
   
105    
106    
107  /* Give friendly warnings if a builtin macro is passed an inappropriate  /* Give friendly warnings if a builtin macro is passed an inappropriate
108     number of arguments.  NAME is macro name for messages, ARGC is actual     number of arguments.  NAME is macro name for messages, ARGC is actual
109     number of arguments, MIN is the minimum number of acceptable arguments,     number of arguments, MIN is the minimum number of acceptable arguments,
# Line 225  m4_expand_ranges (const char *s, struct Line 222  m4_expand_ranges (const char *s, struct
222  static int  static int
223  dumpdef_cmp (const void *s1, const void *s2)  dumpdef_cmp (const void *s1, const void *s2)
224  {  {
225    return strcmp (M4_SYMBOL_NAME (* (m4_symbol *const *) s1),    return strcmp (*(const char **) s1, *(const char **) s2);
                  M4_SYMBOL_NAME (* (m4_symbol *const *) s2));  
226  }  }
227    
228  /* The function dump_symbol () is for use by "dumpdef".  It builds up a  /* The function dump_symbol () is for use by "dumpdef".  It builds up a
229     table of all defined, un-shadowed, symbols.  */     table of all defined symbol names.  */
230  void  int
231  m4_dump_symbol (m4_symbol *symbol, struct m4_dump_symbol_data *data)  m4_dump_symbol (const char *name, m4_symbol *symbol, void *data)
232  {  {
233    if (!M4_SYMBOL_SHADOWED (symbol) && M4_SYMBOL_TYPE (symbol) != M4_TOKEN_VOID)    if (M4_SYMBOL_TYPE (symbol) != M4_TOKEN_VOID)
234      {      {
235        obstack_blank (data->obs, sizeof (m4_symbol *));        struct m4_dump_symbol_data *symbol_data
236        data->base = (m4_symbol **) obstack_base (data->obs);          = (struct m4_dump_symbol_data *) data;
237        data->base[data->size++] = symbol;  
238          obstack_blank (symbol_data->obs, sizeof (const char *));
239          symbol_data->base = (const char **) obstack_base (symbol_data->obs);
240          symbol_data->base[symbol_data->size++] = name;
241      }      }
242    
243      return 0;
244  }  }
245    
246  /* If there are no arguments, build a sorted list of all defined,  /* If there are no arguments, build a sorted list of all defined
247     un-shadowed, symbols, otherwise, only the specified symbols.  */     symbols, otherwise, only the specified symbols.  */
248  void  void
249  m4_dump_symbols (struct m4_dump_symbol_data *data, int argc,  m4_dump_symbols (struct m4_dump_symbol_data *data, int argc,
250                   m4_token_data **argv, boolean complain)                   m4_token_data **argv, boolean complain)
251  {  {
252    data->base = (m4_symbol **) obstack_base (data->obs);    data->base = (const char **) obstack_base (data->obs);
253    data->size = 0;    data->size = 0;
254    
255    if (argc == 1)    if (argc == 1)
256      {      {
257        m4_hack_all_symbols (m4_dump_symbol, (char *) data);        m4_symtab_apply (m4_dump_symbol, data);
258      }      }
259    else    else
260      {      {
# Line 264  m4_dump_symbols (struct m4_dump_symbol_d Line 265  m4_dump_symbols (struct m4_dump_symbol_d
265          {          {
266            symbol = m4_lookup_symbol (M4_TOKEN_DATA_TEXT (argv[i]), M4_SYMBOL_LOOKUP);            symbol = m4_lookup_symbol (M4_TOKEN_DATA_TEXT (argv[i]), M4_SYMBOL_LOOKUP);
267            if (symbol != NULL && M4_SYMBOL_TYPE (symbol) != M4_TOKEN_VOID)            if (symbol != NULL && M4_SYMBOL_TYPE (symbol) != M4_TOKEN_VOID)
268              m4_dump_symbol (symbol, data);              m4_dump_symbol (M4_TOKEN_DATA_TEXT (argv[i]), symbol, data);
269            else if (complain)            else if (complain)
270              M4ERROR ((warning_status, 0,              M4ERROR ((warning_status, 0,
271                        _("Undefined name %s"), M4_TOKEN_DATA_TEXT (argv[i])));                        _("Undefined name %s"), M4_TOKEN_DATA_TEXT (argv[i])));
# Line 272  m4_dump_symbols (struct m4_dump_symbol_d Line 273  m4_dump_symbols (struct m4_dump_symbol_d
273      }      }
274    
275    obstack_finish (data->obs);    obstack_finish (data->obs);
276    qsort ((char *) data->base, data->size, sizeof (m4_symbol *), dumpdef_cmp);    qsort ((void *) data->base, data->size, sizeof (const char *), dumpdef_cmp);
277  }  }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26