PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
options.hh
Go to the documentation of this file.
1 /* Copyright (C) 2014, 2015 PISM Authors
2  *
3  * This file is part of PISM.
4  *
5  * PISM is free software; you can redistribute it and/or modify it under the
6  * terms of the GNU General Public License as published by the Free Software
7  * Foundation; either version 3 of the License, or (at your option) any later
8  * version.
9  *
10  * PISM is distributed in the hope that it will be useful, but WITHOUT ANY
11  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13  * details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with PISM; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #ifndef _OPTIONS_H_
21 #define _OPTIONS_H_
22 
23 namespace pism {
24 namespace options {
25 
26 //! Template base class used by PISM's option-processing classes.
27 /*! (Ensures API consistency and helps code reuse.)
28  */
29 template <typename T>
30 class Option {
31 public:
32  Option() {
33  m_is_set = false;
34  }
35  bool is_set() const {
36  return m_is_set;
37  }
38  T value() const {
39  return m_value;
40  }
41  operator T() const {
42  return m_value;
43  }
44  const T* operator->() const {
45  return &m_value;
46  }
47  T* operator->() {
48  return &m_value;
49  }
50  bool operator==(const T& other) const {
51  return m_value == other;
52  }
53 protected:
55  bool m_is_set;
56  void set(T new_value, bool new_flag) {
57  m_value = new_value;
58  m_is_set = new_flag;
59  }
60 };
61 
62 } // end of namespace options
63 } // end of namespace pism
64 
65 
66 #endif /* _OPTIONS_H_ */
bool is_set() const
Definition: options.hh:35
void set(T new_value, bool new_flag)
Definition: options.hh:56
bool operator==(const T &other) const
Definition: options.hh:50
const T * operator->() const
Definition: options.hh:44
Template base class used by PISM's option-processing classes.
Definition: options.hh:30