Home | History | Annotate | Download | only in binutils
      1 /* windmc.h -- header file for windmc program.
      2    Copyright (C) 2007-2014 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   mc_node_lang *sub;
     70 } mc_node;
     71 
     72 extern mc_node *mc_nodes;
     73 
     74 void mc_add_keyword (unichar *, int, const char *, rc_uint_type, unichar *);
     75 const mc_keyword *enum_facility (int);
     76 const mc_keyword *enum_severity (int);
     77 
     78 mc_node_lang *mc_add_node_lang (mc_node *, const mc_keyword *, rc_uint_type);
     79 mc_node *mc_add_node (void);
     80 
     81 /* Standard yacc/flex stuff.  */
     82 int yyerror (const char *, ...);
     83 int yylex (void);
     84 int yyparse (void);
     85 
     86 /* mclex.c  */
     87 void mc_set_inputfile (const char *);
     88 void mc_set_content (const unichar *);
     89 
     90 /* Lexer control variables. Used by mcparser.y file.  */
     91 extern bfd_boolean mclex_want_nl;
     92 extern bfd_boolean mclex_want_line;
     93 extern bfd_boolean mclex_want_filename;
     94 
     95 void mc_fatal (const char *, ...);
     96 void mc_warn (const char *, ...);
     97 
     98 #endif
     99