Compute Library
 21.05
Option.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2018 Arm Limited.
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in all
14  * copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  * SOFTWARE.
23  */
24 #ifndef ARM_COMPUTE_UTILS_OPTIONBASE
25 #define ARM_COMPUTE_UTILS_OPTIONBASE
26 
27 #include <string>
28 
29 namespace arm_compute
30 {
31 namespace utils
32 {
33 /** Abstract base class for a command line option. */
34 class Option
35 {
36 public:
37  /** Constructor.
38  *
39  * @param[in] name Name of the option.
40  */
41  Option(std::string name);
42 
43  /** Constructor.
44  *
45  * @param[in] name Name of the option.
46  * @param[in] is_required Is the option required?
47  * @param[in] is_set Has a value been assigned to the option?
48  */
49  Option(std::string name, bool is_required, bool is_set);
50 
51  /** Default destructor. */
52  virtual ~Option() = default;
53 
54  /** Parses the given string.
55  *
56  * @param[in] value String representation as passed on the command line.
57  *
58  * @return True if the value could be parsed by the specific subclass.
59  */
60  virtual bool parse(std::string value) = 0;
61 
62  /** Help message for the option.
63  *
64  * @return String representing the help message for the specific subclass.
65  */
66  virtual std::string help() const = 0;
67 
68  /** Name of the option.
69  *
70  * @return Name of the option.
71  */
72  std::string name() const;
73 
74  /** Set whether the option is required.
75  *
76  * @param[in] is_required Pass true if the option is required.
77  */
78  void set_required(bool is_required);
79 
80  /** Set the help message for the option.
81  *
82  * @param[in] help Option specific help message.
83  */
84  void set_help(std::string help);
85 
86  /** Is the option required?
87  *
88  * @return True if the option is required.
89  */
90  bool is_required() const;
91 
92  /** Has a value been assigned to the option?
93  *
94  * @return True if a value has been set.
95  */
96  bool is_set() const;
97 
98 protected:
99  std::string _name;
100  bool _is_required{ false };
101  bool _is_set{ false };
102  std::string _help{};
103 };
104 
105 inline Option::Option(std::string name)
106  : _name{ std::move(name) }
107 {
108 }
109 
110 inline Option::Option(std::string name, bool is_required, bool is_set)
111  : _name{ std::move(name) }, _is_required{ is_required }, _is_set{ is_set }
112 {
113 }
114 
115 inline std::string Option::name() const
116 {
117  return _name;
118 }
119 
120 inline void Option::set_required(bool is_required)
121 {
122  _is_required = is_required;
123 }
124 
125 inline void Option::set_help(std::string help)
126 {
127  _help = std::move(help);
128 }
129 
130 inline bool Option::is_required() const
131 {
132  return _is_required;
133 }
134 
135 inline bool Option::is_set() const
136 {
137  return _is_set;
138 }
139 } // namespace utils
140 } // namespace arm_compute
141 #endif /* ARM_COMPUTE_UTILS_OPTIONBASE */
Abstract base class for a command line option.
Definition: Option.h:34
virtual bool parse(std::string value)=0
Parses the given string.
virtual std::string help() const =0
Help message for the option.
Copyright (c) 2017-2021 Arm Limited.
std::string name() const
Name of the option.
Definition: Option.h:115
virtual ~Option()=default
Default destructor.
const char * name
void set_required(bool is_required)
Set whether the option is required.
Definition: Option.h:120
Option(std::string name)
Constructor.
Definition: Option.h:105
bool is_required() const
Is the option required?
Definition: Option.h:130
bool is_set() const
Has a value been assigned to the option?
Definition: Option.h:135
void set_help(std::string help)
Set the help message for the option.
Definition: Option.h:125