1
// Copyright (C) 2003-2005 Anders Logg.
2
// Licensed under the GNU LGPL Version 2.1.
4
// First added: 2003-05-06
5
// Last changed: 2005-12-21
7
#include <dolfin/dolfin_log.h>
8
#include <dolfin/ParameterValue.h>
9
#include <dolfin/Parameter.h>
11
using namespace dolfin;
13
//-----------------------------------------------------------------------------
14
Parameter::Parameter(int value) : value(0), _type(type_int)
16
this->value = new IntValue(value);
18
//-----------------------------------------------------------------------------
19
Parameter::Parameter(uint value) : value(0), _type(type_int)
21
this->value = new IntValue(static_cast<int>(value));
23
//-----------------------------------------------------------------------------
24
Parameter::Parameter(real value) : value(0), _type(type_real)
26
this->value = new RealValue(value);
28
//-----------------------------------------------------------------------------
29
Parameter::Parameter(bool value) : value(0), _type(type_bool)
31
this->value = new BoolValue(value);
33
//-----------------------------------------------------------------------------
34
Parameter::Parameter(std::string value) : value(0), _type(type_string)
36
this->value = new StringValue(value);
38
//-----------------------------------------------------------------------------
39
Parameter::Parameter(const char* value) : value(0), _type(type_string)
42
this->value = new StringValue(s);
44
//-----------------------------------------------------------------------------
45
Parameter::Parameter(const Parameter& parameter)
46
: value(0), _type(parameter._type)
48
switch ( parameter._type )
51
value = new IntValue(*parameter.value);
54
value = new RealValue(*parameter.value);
57
value = new BoolValue(*parameter.value);
60
value = new StringValue(*parameter.value);
63
error("Unknown parameter type: %d.", parameter._type);
66
//-----------------------------------------------------------------------------
67
const Parameter& Parameter::operator= (int value)
69
*(this->value) = value;
72
//-----------------------------------------------------------------------------
73
const Parameter& Parameter::operator= (dolfin::uint value)
75
*(this->value) = value;
78
//-----------------------------------------------------------------------------
79
const Parameter& Parameter::operator= (real value)
81
*(this->value) = value;
84
//-----------------------------------------------------------------------------
85
const Parameter& Parameter::operator= (bool value)
87
*(this->value) = value;
90
//-----------------------------------------------------------------------------
91
const Parameter& Parameter::operator= (std::string value)
93
*(this->value) = value;
96
//-----------------------------------------------------------------------------
97
const Parameter& Parameter::operator= (const Parameter& parameter)
101
switch ( parameter._type )
104
value = new IntValue(*parameter.value);
107
value = new RealValue(*parameter.value);
110
value = new BoolValue(*parameter.value);
113
value = new StringValue(*parameter.value);
116
error("Unknown parameter type: %d.", parameter._type);
119
_type = parameter._type;
123
//-----------------------------------------------------------------------------
124
Parameter::~Parameter()
126
if ( value ) delete value;
128
//-----------------------------------------------------------------------------
129
Parameter::operator int() const
133
//-----------------------------------------------------------------------------
134
Parameter::operator dolfin::uint() const
138
//-----------------------------------------------------------------------------
139
Parameter::operator real() const
143
//-----------------------------------------------------------------------------
144
Parameter::operator bool() const
148
//-----------------------------------------------------------------------------
149
Parameter::operator std::string() const
153
//-----------------------------------------------------------------------------
154
Parameter::Type Parameter::type() const
158
//-----------------------------------------------------------------------------
159
dolfin::LogStream& dolfin::operator<<(LogStream& stream,
160
const Parameter& parameter)
162
switch ( parameter.type() )
164
case Parameter::type_int:
165
stream << "[Parameter: value = "
166
<< static_cast<int>(parameter) << " (int)]";
168
case Parameter::type_real:
169
stream << "[Parameter: value = "
170
<< static_cast<real>(parameter) << " (real)]";
172
case Parameter::type_bool:
173
if ( static_cast<bool>(parameter) )
174
stream << "[Parameter: value = true (bool)]";
176
stream << "[Parameter: value = false (bool)]";
178
case Parameter::type_string:
179
stream << "[Parameter: value = \""
180
<< static_cast<std::string>(parameter) << "\" (string)]";
183
error("Unknown parameter type: %d.", parameter._type);
188
//-----------------------------------------------------------------------------