aboutsummaryrefslogtreecommitdiff
path: root/contrib/otshell_utils/runoptions.hpp
blob: f3306283aedb6716369fa8275d3b661214832387 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* See other files here for the LICENCE that applies here. */
/*
Template for new files, replace word "template" and later delete this line here.
*/

#ifndef INCLUDE_OT_NEWCLI_runoptions_hpp
#define INCLUDE_OT_NEWCLI_runoptions_hpp

#include "lib_common1.hpp"

namespace nOT {

INJECT_OT_COMMON_USING_NAMESPACE_COMMON_1; // <=== namespaces

/** Global options to run this program main() Eg used for developer's special options like +setdemo +setdebug.
This is NOT for all the other options that are parsed and executed by program. */
class cRunOptions {
	public:
		enum tRunMode { ///< Type of run mode - is this normal, or demonstration etc.
			eRunModeCurrent=1, ///< currently developed version
			eRunModeDemo, ///< best currently available Demo of something nice
			eRunModeNormal, ///< do the normal things that the program should do
		};

	private:
		tRunMode mRunMode; ///< selected run mode

		bool mDebug; // turn debug on, Eg: +debug without it probably nothing will be written to debug (maybe just error etc)
		bool mDebugSendToFile; // send to file, Eg: for +debugfile ; also turns on debug
		bool mDebugSendToCerr; // send to cerr, Eg: for +debugcerr ; also turns on debug
		// if debug is set but not any other DebugSend* then we will default to sending to debugcerr

		bool mDoRunDebugshow;

	public:
		tRunMode getTRunMode() const { return mRunMode; }
		bool getDebug() const { return mDebug; }
		bool getDebugSendToFile() const { return mDebugSendToFile; }
		bool getDebugSendToCerr() const { return mDebugSendToCerr; }
		bool getDoRunDebugshow() const { return mDoRunDebugshow; }

		cRunOptions();

		vector<string> ExecuteRunoptionsAndRemoveThem(const vector<string> & args);
		void Exec(const string & runoption); // eg: Exec("+debug");

		void Normalize();
};

extern cRunOptions gRunOptions;


}; // namespace nOT



#endif