]> Git Repo - binutils.git/blob - gprofng/src/Emsg.h
Automatic date update in version.in
[binutils.git] / gprofng / src / Emsg.h
1 /* Copyright (C) 2021 Free Software Foundation, Inc.
2    Contributed by Oracle.
3
4    This file is part of GNU Binutils.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3, or (at your option)
9    any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, 51 Franklin Street - Fifth Floor, Boston,
19    MA 02110-1301, USA.  */
20
21 #ifndef _EMSG_H
22 #define _EMSG_H
23
24 #include "Emsgnum.h"
25 #include "vec.h"
26
27 //
28 // The Emsg, experiment message, has as objects I18N'd messages
29 //      in a structure suitable for attaching to and fetching
30 //      from a queue of such messages.  It is intended to
31 //      be used for collector errors, collector warnings, parser
32 //      errors, and er_archive errors that are encountered when
33 //      reading an experiment
34
35 class Emsg;
36 class Emsgqueue;
37 class StringBuilder;
38
39 typedef enum
40 {
41   CMSG_WARN = 0,
42   CMSG_ERROR,
43   CMSG_FATAL,
44   CMSG_COMMENT,
45   CMSG_PARSER,
46   CMSG_ARCHIVE
47 } Cmsg_warn;
48
49 class Emsg
50 {
51 public:
52   friend class Emsgqueue;
53
54   Emsg (Cmsg_warn w, const char *i18n_text);
55   Emsg (Cmsg_warn w, StringBuilder& sb);
56   Emsg (Cmsg_warn w, int f, const char *param);
57   ~Emsg ();
58
59   char *
60   get_msg ()
61   {
62     return text;
63   };
64
65   Cmsg_warn
66   get_warn ()
67   {
68     return warn;
69   };
70
71   Emsg *next;       // next message in a queue
72
73 protected:
74   Cmsg_warn warn;   // error/warning/...
75   int flavor;       // the message flavor
76   char *par;        // the input parameter string
77   char *text;       // The I18N text of the message
78 };
79
80 class Emsgqueue
81 {
82 public:
83   Emsgqueue (char *);
84   ~Emsgqueue ();
85
86   void append (Emsg*);
87   Emsg *append (Cmsg_warn w, char *msg);
88   Emsg *find_msg (Cmsg_warn w, char *msg);
89   void appendqueue (Emsgqueue*);
90   Emsg *fetch (void);
91   void clear (void); // empty the queue
92   void mark_clear (void); // mark the queue empty, without touching messages
93
94 protected:
95   Emsg *first;
96   Emsg *last;
97   char *qname;
98 };
99
100 class DbeMessages
101 {
102 public:
103   DbeMessages ();
104   ~DbeMessages ();
105   Vector<Emsg*> *msgs;
106   void remove_msg (Emsg *msg);
107   Emsg *get_error ();
108   Emsg *append_msg (Cmsg_warn w, const char *fmt, ...);
109   void append_msgs (Vector<Emsg*> *lst);
110 };
111
112 #endif  /* _EMSG_H */
This page took 0.029623 seconds and 4 git commands to generate.