Loading [MathJax]/extensions/tex2jax.js
PISM, A Parallel Ice Sheet Model 2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
23namespace pism {
24namespace options {
25
26//! Template base class used by PISM's option-processing classes.
27/*! (Ensures API consistency and helps code reuse.)
28 */
29template <typename T>
30class Option {
31public:
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 }
48 return &m_value;
49 }
50 bool operator==(const T& other) const {
51 return m_value == other;
52 }
53protected:
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_ */
const T * operator->() const
Definition options.hh:44
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
Template base class used by PISM's option-processing classes.
Definition options.hh:30