summaryrefslogtreecommitdiff
path: root/gprofng/src/Emsg.h
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/Emsg.h')
-rw-r--r--gprofng/src/Emsg.h112
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 */