Minotaur 0.4.1
Docs for developers
Option.h
Go to the documentation of this file.
1//
2// Minotaur -- It's only 1/2 bull
3//
4// (C)opyright 2008 - 2025 The Minotaur Team.
5//
6
14#ifndef MINOTAUR_OPTIONS
15#define MINOTAUR_OPTIONS
16
17#include <string>
18
19#include "Types.h"
20
21namespace Minotaur {
53 template <class T> class Option {
54 public:
56 Option(const std::string& name, const std::string& desc,
57 bool is_known=false, T val=0);
58
60 virtual ~Option();
61
63 virtual void setValue(T val) { val_ = val; return; };
64
66 virtual T getValue() { return val_; };
67
69 virtual const std::string & getName();
70
72 virtual const std::string & getDesc();
73
75 virtual bool wasEverUsed() {return everUsed_;};
76
78 virtual void setUsedFlag(const bool &used_flag) {everUsed_ = used_flag;};
79
81 virtual bool isKnown() {return isKnown_;};
82
84 virtual void setKnownFlag(const bool &known_flag)
85 {isKnown_ = known_flag;};
86
88 virtual void write(std::ostream &out) const;
89
90 protected:
101 std::string name_;
102
107 std::string desc_;
108
114
120
123
124 private:
126 Option (const Option<T> &o);
127
129 Option & operator = (const Option<T> &o);
130 };
131
132
141 class OptionDB {
142 public:
144 OptionDB();
145
147 ~OptionDB();
148
150 void insert(BoolOptionPtr option, bool is_flag=false);
151
153 void insert(IntOptionPtr option);
154
156 void insert(DoubleOptionPtr option);
157
159 void insert(StringOptionPtr option);
160
162 BoolOptionPtr findBool(const std::string &name);
163
165 IntOptionPtr findInt(const std::string &name);
166
168 DoubleOptionPtr findDouble(const std::string &name);
169
171 StringOptionPtr findString(const std::string &name);
172
174 FlagOptionPtr findFlag(const std::string &name);
175
180 UInt remove(const std::string &name);
181
183 BoolOptionSetIter boolBegin();
184
186 BoolOptionSetIter boolEnd();
187
189 IntOptionSetIter intBegin();
190
192 IntOptionSetIter intEnd();
193
195 DoubleOptionSetIter dblBegin();
196
198 DoubleOptionSetIter dblEnd();
199
201 StringOptionSetIter strBegin();
202
204 StringOptionSetIter strEnd();
205
207 FlagOptionSetIter flagBegin();
208
210 FlagOptionSetIter flagEnd();
211
216 void write(std::ostream &out) const;
217
218 private:
220 BoolOptionSet boolOps_;
221
223 IntOptionSet intOps_;
224
226 DoubleOptionSet doubleOps_;
227
229 StringOptionSet stringOps_;
230
232 FlagOptionSet flagOps_;
233 };
234 typedef OptionDB* OptionDBPtr;
235}
236
237#endif
238
Declare important 'types' used in Minotaur.
Definition: Option.h:141
~OptionDB()
Destroy.
Definition: Option.cpp:85
DoubleOptionSetIter dblEnd()
Iterator to access the last double option.
Definition: Option.cpp:248
IntOptionPtr findInt(const std::string &name)
Find an int option in the database.
Definition: Option.cpp:159
OptionDB()
Default constructor.
Definition: Option.cpp:80
BoolOptionSetIter boolBegin()
Iterator to access the first bool option.
Definition: Option.cpp:223
void insert(BoolOptionPtr option, bool is_flag=false)
Add a bool option to the database.
Definition: Option.cpp:115
FlagOptionSetIter flagEnd()
Iterator to access the last flag.
Definition: Option.cpp:268
BoolOptionSetIter boolEnd()
Iterator to access the last bool option.
Definition: Option.cpp:228
DoubleOptionSetIter dblBegin()
Iterator to access the first double option.
Definition: Option.cpp:243
StringOptionSetIter strBegin()
Iterator to access the first string option.
Definition: Option.cpp:253
UInt remove(const std::string &name)
BoolOptionPtr findBool(const std::string &name)
Find a bool option in the database.
Definition: Option.cpp:143
FlagOptionSetIter flagBegin()
Iterator to access the first flag.
Definition: Option.cpp:263
StringOptionPtr findString(const std::string &name)
Find a string option in the database.
Definition: Option.cpp:191
DoubleOptionPtr findDouble(const std::string &name)
Find a double option in the database.
Definition: Option.cpp:175
IntOptionSetIter intEnd()
Iterator to access the last integer option.
Definition: Option.cpp:238
FlagOptionPtr findFlag(const std::string &name)
Find a flag option in the database.
Definition: Option.cpp:207
void write(std::ostream &out) const
Definition: Option.cpp:274
IntOptionSetIter intBegin()
Iterator to access the first integer option.
Definition: Option.cpp:233
StringOptionSetIter strEnd()
Iterator to access the last string option.
Definition: Option.cpp:258
Definition: Option.h:53
virtual ~Option()
Destroy.
Definition: Option.cpp:36
virtual void setKnownFlag(const bool &known_flag)
Set or unset the 'known' flag.
Definition: Option.h:84
T val_
Definition: Option.h:113
virtual void write(std::ostream &out) const
Write to the output stream.
Definition: Option.cpp:53
virtual T getValue()
Get the value of option.
Definition: Option.h:66
virtual const std::string & getDesc()
Get the help description of this option.
Definition: Option.cpp:47
virtual bool isKnown()
Return true if the option is known to Minotaur.
Definition: Option.h:81
virtual const std::string & getName()
Get the name of this option.
Definition: Option.cpp:41
virtual void setValue(T val)
Set the value of this option.
Definition: Option.h:63
virtual bool wasEverUsed()
Check if this option was used somewhere.
Definition: Option.h:75
std::string name_
Definition: Option.h:101
std::string desc_
Definition: Option.h:107
bool everUsed_
Definition: Option.h:119
Option(const std::string &name, const std::string &desc, bool is_known=false, T val=0)
Construct the option using name, description and value.
Definition: Option.cpp:24
virtual void setUsedFlag(const bool &used_flag)
Set the 'used' flag. Used flag is true if.
Definition: Option.h:78
bool isKnown_
True, if the option is known to minotaur.
Definition: Option.h:122
Definition: ActiveNodeStore.h:20
unsigned int UInt
Unsigned integer.
Definition: Types.h:30

Minotaur source code documented by Doxygen 1.9.4 on Thu Apr 24 2025