OMSimulatorLib
The OMSimulator project is a FMI-based co-simulation environment.
Loading...
Searching...
No Matches
Option.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenModelica.
3 *
4 * Copyright (c) 1998-CurrentYear, Open Source Modelica Consortium (OSMC),
5 * c/o Linköpings universitet, Department of Computer and Information Science,
6 * SE-58183 Linköping, Sweden.
7 *
8 * All rights reserved.
9 *
10 * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF GPL VERSION 3 LICENSE OR
11 * THIS OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.2.
12 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES
13 * RECIPIENT'S ACCEPTANCE OF THE OSMC PUBLIC LICENSE OR THE GPL VERSION 3,
14 * ACCORDING TO RECIPIENTS CHOICE.
15 *
16 * The OpenModelica software and the Open Source Modelica
17 * Consortium (OSMC) Public License (OSMC-PL) are obtained
18 * from OSMC, either from the above address,
19 * from the URLs: http://www.ida.liu.se/projects/OpenModelica or
20 * http://www.openmodelica.org, and in the OpenModelica distribution.
21 * GNU version 3 is obtained from: http://www.gnu.org/copyleft/gpl.html.
22 *
23 * This program is distributed WITHOUT ANY WARRANTY; without
24 * even the implied warranty of MERCHANTABILITY or FITNESS
25 * FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY SET FORTH
26 * IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF OSMC-PL.
27 *
28 * See the full OSMC Public License conditions for more details.
29 *
30 */
31
32#ifndef _OMS_OPTION_H_
33#define _OMS_OPTION_H_
34
35namespace oms
36{
37 template <typename T>
38 class Option
39 {
40 public:
41 Option<T>() :some(false) {}
42 Option<T>(T value) :some(true), value(value) {}
43 Option<T>(Option<T> const& rhs) :some(rhs.some), value(rhs.value) {}
44 ~Option<T>() {}
45
46 Option<T>& operator=(Option<T> const& rhs) {this->some = rhs.some; this->value = rhs.value; return *this;}
47 Option<T>& operator=(T const& rhs) {this->some = true; this->value = rhs; return *this;}
48
49 inline bool isSome() const {return some;}
50 inline bool isNone() const {return !isSome();}
51 T getValue() const {return value;}
52 void setValue(const T& value) {some = true; this->value = value;}
53 void setNone() {some = false;}
54
55 private:
56 bool some;
58 };
59}
60
61#endif
Definition Option.h:39
T getValue() const
Definition Option.h:51
Option< T > & operator=(Option< T > const &rhs)
Definition Option.h:46
T value
Definition Option.h:57
void setNone()
Definition Option.h:53
bool some
Definition Option.h:56
bool isSome() const
Definition Option.h:49
Option< T > & operator=(T const &rhs)
Definition Option.h:47
bool isNone() const
Definition Option.h:50
void setValue(const T &value)
Definition Option.h:52
Definition AlgLoop.h:45