(root)/
binutils-2.41/
binutils/
windmc.h
       1  /* windmc.h -- header file for windmc program.
       2     Copyright (C) 2007-2023 Free Software Foundation, Inc.
       3     Written by Kai Tietz, Onevision.
       4  
       5     This file is part of GNU Binutils.
       6  
       7     This program is free software; you can redistribute it and/or modify
       8     it under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 3 of the License, or
      10     (at your option) any later version.
      11  
      12     This program is distributed in the hope that it will be useful,
      13     but WITHOUT ANY WARRANTY; without even the implied warranty of
      14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15     GNU General Public License for more details.
      16  
      17     You should have received a copy of the GNU General Public License
      18     along with this program; if not, write to the Free Software
      19     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
      20     02110-1301, USA.  */
      21  
      22  #include "ansidecl.h"
      23  
      24  /* This is the header file for the windmc program.  It defines
      25     structures and declares functions used within the program.  */
      26  
      27  #include "winduni.h"
      28  
      29  #ifndef WINDMC_HXX
      30  #define WINDMC_HXX
      31  
      32  /* Global flag variables (set by windmc.c file.  */
      33  extern int mcset_custom_bit;
      34  extern int mcset_out_values_are_decimal;
      35  extern rc_uint_type mcset_max_message_length;
      36  extern unichar *mcset_msg_id_typedef;
      37  
      38  /* Lexer keyword definition and internal memory structures.  */
      39  
      40  typedef struct mc_keyword
      41  {
      42    struct mc_keyword *next;
      43    const char *group_name;
      44    size_t len;
      45    unichar *usz;
      46    int rid;
      47    rc_uint_type nval;
      48    unichar *sval;
      49    wind_language_t lang_info;
      50  } mc_keyword;
      51  
      52  typedef struct mc_node_lang
      53  {
      54    struct mc_node_lang *next;
      55    rc_uint_type vid;
      56    const mc_keyword *lang;
      57    unichar *message;
      58  } mc_node_lang;
      59  
      60  typedef struct mc_node
      61  {
      62    struct mc_node *next;
      63    unichar *user_text;
      64    const mc_keyword *facility;
      65    const mc_keyword *severity;
      66    unichar *symbol;
      67    rc_uint_type id;
      68    rc_uint_type vid;
      69    unichar *id_typecast;
      70    mc_node_lang *sub;
      71  } mc_node;
      72  
      73  extern mc_node *mc_nodes;
      74  
      75  void mc_add_keyword (unichar *, int, const char *, rc_uint_type, unichar *);
      76  const mc_keyword *enum_facility (int);
      77  const mc_keyword *enum_severity (int);
      78  
      79  mc_node_lang *mc_add_node_lang (mc_node *, const mc_keyword *, rc_uint_type);
      80  mc_node *mc_add_node (void);
      81  
      82  /* Standard yacc/flex stuff.  */
      83  void yyerror (const char *);
      84  int yylex (void);
      85  int yyparse (void);
      86  
      87  /* mclex.c  */
      88  void mc_set_inputfile (const char *);
      89  void mc_set_content (const unichar *);
      90  
      91  /* Lexer control variables. Used by mcparser.y file.  */
      92  extern bool mclex_want_nl;
      93  extern bool mclex_want_line;
      94  extern bool mclex_want_filename;
      95  
      96  void mc_fatal (const char *, ...);
      97  void mc_warn (const char *, ...);
      98  
      99  #endif