diff options
Diffstat (limited to 'gprofng/src/Emsg.h')
-rw-r--r-- | gprofng/src/Emsg.h | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/gprofng/src/Emsg.h b/gprofng/src/Emsg.h new file mode 100644 index 00000000000..f1d47c5b1a4 --- /dev/null +++ b/gprofng/src/Emsg.h @@ -0,0 +1,112 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + Contributed by Oracle. + + This file is part of GNU Binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _EMSG_H +#define _EMSG_H + +#include "Emsgnum.h" +#include "vec.h" + +// +// The Emsg, experiment message, has as objects I18N'd messages +// in a structure suitable for attaching to and fetching +// from a queue of such messages. It is intended to +// be used for collector errors, collector warnings, parser +// errors, and er_archive errors that are encountered when +// reading an experiment + +class Emsg; +class Emsgqueue; +class StringBuilder; + +typedef enum +{ + CMSG_WARN = 0, + CMSG_ERROR, + CMSG_FATAL, + CMSG_COMMENT, + CMSG_PARSER, + CMSG_ARCHIVE +} Cmsg_warn; + +class Emsg +{ +public: + friend class Emsgqueue; + + Emsg (Cmsg_warn w, const char *i18n_text); + Emsg (Cmsg_warn w, StringBuilder& sb); + Emsg (Cmsg_warn w, int f, const char *param); + ~Emsg (); + + char * + get_msg () + { + return text; + }; + + Cmsg_warn + get_warn () + { + return warn; + }; + + Emsg *next; // next message in a queue + +protected: + Cmsg_warn warn; // error/warning/... + int flavor; // the message flavor + char *par; // the input parameter string + char *text; // The I18N text of the message +}; + +class Emsgqueue +{ +public: + Emsgqueue (char *); + ~Emsgqueue (); + + void append (Emsg*); + Emsg *append (Cmsg_warn w, char *msg); + Emsg *find_msg (Cmsg_warn w, char *msg); + void appendqueue (Emsgqueue*); + Emsg *fetch (void); + void clear (void); // empty the queue + void mark_clear (void); // mark the queue empty, without touching messages + +protected: + Emsg *first; + Emsg *last; + char *qname; +}; + +class DbeMessages +{ +public: + DbeMessages (); + ~DbeMessages (); + Vector<Emsg*> *msgs; + void remove_msg (Emsg *msg); + Emsg *get_error (); + Emsg *append_msg (Cmsg_warn w, const char *fmt, ...); + void append_msgs (Vector<Emsg*> *lst); +}; + +#endif /* _EMSG_H */ |