aboutsummaryrefslogtreecommitdiff
path: root/gprofng/src/Application.h
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/Application.h')
-rw-r--r--gprofng/src/Application.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/gprofng/src/Application.h b/gprofng/src/Application.h
new file mode 100644
index 0000000..404383b
--- /dev/null
+++ b/gprofng/src/Application.h
@@ -0,0 +1,108 @@
+/* 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. */
+
+/*
+ * The Application class is the base class for all C++ executables
+ * in the Performance Tools Suite
+ *
+ * It determines the directory from which the running binary came,
+ * sets up the I18N catalog, the program name, and initializes
+ * an instance of the Settings class to manage all user preferences
+ * and settings. It also manages usage tracking.
+ *
+ * Applications which read experiments are derived from a subclass
+ * named DbeApplication (q.v.)
+ */
+
+#ifndef _APPLICATION_H
+#define _APPLICATION_H
+
+#include "dbe_types.h"
+
+class Settings;
+class Emsg;
+class Emsgqueue;
+
+// Application object
+class Application
+{
+public:
+ Application (int argc, char *argv[], char *_run_dir = NULL);
+ virtual ~Application ();
+ void set_name (const char *_name);
+ char *get_cur_dir ();
+
+ // Control the settings of a progress bar, used for GUI applications
+ // this function also detects cancel requests and returns 1
+ // if yes, 0 otherwise
+ static int set_progress (int percentage, const char *proc_str);
+ static char *get_realpath (const char *_name);
+
+ // queue for messages (from reading er.rc files, ...)
+ void queue_comment (Emsg *m); // queue for messages
+ Emsg *fetch_comments (void); // fetch the queue of comment messages
+ void delete_comments (void); // delete the queue of comment messages
+
+ // worker threads (currently used in dbe_stat() for stat() calls)
+ int get_number_of_worker_threads ();
+
+ char *get_version () { return prog_version; }
+ char *get_name () { return prog_name; }
+ char *get_run_dir () { return run_dir; }
+ Emsgqueue *get_comments_queue () { return commentq; };
+
+protected: // methods
+ void set_run_dir (char *fdhome = NULL);
+ typedef int (*ProgressFunc)(int, const char *);
+
+ // Write a usage message; to be defined in derived class
+ virtual void usage () = 0;
+
+// Ruud
+ // Write a version message; to be defined in derived class
+ void print_version_info ();
+
+ // Can be overridden in derived class
+ virtual int check_args (int argc, char *argv[]);
+
+ void read_rc ();
+ static void set_progress_func (ProgressFunc func) { progress_func = func; }
+
+protected:
+ Emsgqueue *commentq;
+ Settings *settings;
+ char *prog_version;
+ char *prog_name;
+ char *whoami;
+ char *run_dir;
+ char *run_dir_with_spaces; // used in case there are spaces
+ char *cur_dir;
+ int lic_found;
+ char *lic_err;
+
+private:
+ void set_ut_email (int argc, char *argv[]);
+ int number_of_worker_threads;
+ static ProgressFunc progress_func;
+};
+
+extern Application *theApplication;
+
+#endif /* _APPLICATION_H */