toptions.hh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
HTML git clone git://src.adamsgaard.dk/pism
DIR Log
DIR Files
DIR Refs
DIR LICENSE
---
toptions.hh (1602B)
---
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:
54 T m_value;
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_ */