]> Git Repo - binutils.git/blob - gprofng/src/Application.h
Automatic date update in version.in
[binutils.git] / gprofng / src / Application.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 /*
22  * The Application class is the base class for all C++ executables
23  *      in the Performance Tools Suite
24  *
25  *      It determines the directory from which the running binary came,
26  *      sets up the I18N catalog, the program name, and initializes
27  *      an instance of the Settings class to manage all user preferences
28  *      and settings.  It also manages usage tracking.
29  *
30  *      Applications which read experiments are derived from a subclass
31  *      named DbeApplication (q.v.)
32  */
33
34 #ifndef _APPLICATION_H
35 #define _APPLICATION_H
36
37 #include "dbe_types.h"
38
39 class Settings;
40 class Emsg;
41 class Emsgqueue;
42
43 // Application object
44 class Application
45 {
46 public:
47   Application (int argc, char *argv[], char *_run_dir = NULL);
48   virtual ~Application ();
49   void set_name (const char *_name);
50   char *get_cur_dir ();
51
52   // Control the settings of a progress bar, used for GUI applications
53   // this function also detects cancel requests and returns 1
54   // if yes, 0 otherwise
55   static int set_progress (int percentage, const char *proc_str);
56   static char *get_realpath (const char *_name);
57
58   // queue for messages (from reading er.rc files, ...)
59   void queue_comment (Emsg *m); // queue for messages
60   Emsg *fetch_comments (void);  // fetch the queue of comment messages
61   void delete_comments (void);  // delete the queue of comment messages
62
63   // worker threads (currently used in dbe_stat() for stat() calls)
64   int get_number_of_worker_threads ();
65
66   char *get_version ()              { return prog_version; }
67   char *get_name ()                 { return prog_name; }
68   char *get_run_dir ()              { return run_dir; }
69   Emsgqueue *get_comments_queue ()  { return commentq; };
70
71 protected: // methods
72   void set_run_dir (char *fdhome = NULL);
73   typedef int (*ProgressFunc)(int, const char *);
74
75   // Write a usage message; to be defined in derived class
76   virtual void usage () = 0;
77
78 // Ruud
79   // Write a version message; to be defined in derived class
80   void print_version_info ();
81
82   // Can be overridden in derived class
83   virtual int check_args (int argc, char *argv[]);
84
85   void read_rc ();
86   static void set_progress_func (ProgressFunc func) { progress_func = func; }
87
88 protected:
89   Emsgqueue *commentq;
90   Settings *settings;
91   char *prog_version;
92   char *prog_name;
93   char *whoami;
94   char *run_dir;
95   char *run_dir_with_spaces; // used in case there are spaces
96   char *cur_dir;
97   int lic_found;
98   char *lic_err;
99
100 private:
101   void set_ut_email (int argc, char *argv[]);
102   int number_of_worker_threads;
103   static ProgressFunc progress_func;
104 };
105
106 extern Application *theApplication;
107
108 #endif /* _APPLICATION_H */
This page took 0.02955 seconds and 4 git commands to generate.