1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#ifndef Fireworks_Core_FWGenericParameter_h
#define Fireworks_Core_FWGenericParameter_h
// -*- C++ -*-
//
// Package: Core
// Class : FWBoolParameter
//
/**\class FWGenericParameter FWGenericParameter.h Fireworks/Core/interface/FWGenericParameter.h
Description: Provides access to a simple generic parameter.
Usage:
*/
//
// Original Author: Chris Jones
// Created: Fri Mar 7 14:36:34 EST 2008
//
// system include files
#include <sigc++/signal.h>
#include <sstream>
// user include files
#include "Fireworks/Core/interface/FWParameterBase.h"
#include "Fireworks/Core/interface/FWConfiguration.h"
// forward declarations
template <class T>
class FWGenericParameter : public FWParameterBase {
public:
typedef T value_type;
FWGenericParameter() : FWParameterBase(nullptr, "invalid") {}
FWGenericParameter(FWParameterizable* iParent, const std::string& iName, const T& iDefault = T())
: FWParameterBase(iParent, iName), m_value(iDefault) {}
template <class K>
FWGenericParameter(FWParameterizable* iParent, const std::string& iName, K iCallback, const T& iDefault = T())
: FWParameterBase(iParent, iName), m_value(iDefault) {
changed_.connect(iCallback);
}
//virtual ~FWBoolParameter();
// ---------- const member functions ---------------------
T value() const { return m_value; }
void addTo(FWConfiguration& iTo) const override {
std::ostringstream s;
s << m_value;
iTo.addKeyValue(name(), FWConfiguration(s.str()));
}
// ---------- static member functions --------------------
// ---------- member functions ---------------------------
void setFrom(const FWConfiguration& iFrom) override {
if (const FWConfiguration* config = iFrom.valueForKey(name())) {
std::istringstream s(config->value());
s >> m_value;
}
changed_(m_value);
}
void set(T iValue) {
m_value = iValue;
changed_(iValue);
}
sigc::signal<void(T)> changed_;
FWGenericParameter(const FWGenericParameter&) = delete; // stop default
const FWGenericParameter& operator=(const FWGenericParameter&) = delete; // stop default
private:
// ---------- member data --------------------------------
T m_value;
};
#endif
|