author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Sun, 17 Feb 2008 04:38:34 +0100 | |
changeset 2424 | 217a447122a6 |
parent 2423 | 5609a96df2f6 |
child 2427 | 9245ec163111 |
permissions | -rw-r--r-- |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
1 |
#ifndef PARAM_SPEC_HELPER_H |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
#define PARAM_SPEC_HELPER_H |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
|
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
namespace ns3 { |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
5 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
6 |
template <typename BASE, typename V, typename T1> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
7 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
8 |
MakeParamSpecHelper (T1 a1); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
9 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
10 |
template <typename BASE, typename V, typename T1, typename T2> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
11 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
12 |
MakeParamSpecHelper (T1 a1, T2 a2); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
13 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
14 |
template <typename BASE, typename V, typename T1, typename CHECKER> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
15 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
16 |
MakeParamSpecHelperWithChecker (T1 a1, CHECKER checker); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
17 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
18 |
template <typename BASE, typename V, typename T1, typename T2, typename CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
19 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
20 |
MakeParamSpecHelperWithChecker (T1 a1, T2 a2, CHECKER checker); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
21 |
|
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
22 |
} // namespace ns3 |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
23 |
|
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
24 |
/*************************************************************** |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
25 |
* The implementation of the above functions. |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
26 |
***************************************************************/ |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
27 |
|
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
28 |
#include "type-traits.h" |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
29 |
|
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
30 |
namespace ns3 { |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
31 |
|
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
32 |
template <typename BASE, typename T, typename U, typename CHECKER> |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
33 |
class ParamSpecHelper : public BASE |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
{ |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
public: |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
36 |
ParamSpecHelper (CHECKER checker) |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
37 |
: m_checker (checker) {} |
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
38 |
|
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
39 |
virtual bool Set (ObjectBase * object, PValue val) const { |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
40 |
const U *value = val.DynCast<const U*> (); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
41 |
if (value == 0) |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
42 |
{ |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
43 |
return false; |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
44 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
45 |
T *obj = dynamic_cast<T *> (object); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
46 |
if (obj == 0) |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
47 |
{ |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
48 |
return false; |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
49 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
50 |
return DoSet (obj, value); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
51 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
52 |
|
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
53 |
virtual bool Get (const ObjectBase * object, PValue val) const { |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
54 |
U *value = val.DynCast<U*> (); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
55 |
if (value == 0) |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
56 |
{ |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
57 |
return false; |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
58 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
59 |
const T *obj = dynamic_cast<const T *> (object); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
60 |
if (obj == 0) |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
61 |
{ |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
62 |
return false; |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
63 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
64 |
return DoGet (obj, value); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
65 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
66 |
|
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
67 |
virtual bool Check (PValue value) const { |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
68 |
const U *val = value.DynCast<const U*> (); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
69 |
if (val == 0) |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
70 |
{ |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
71 |
return false; |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
72 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
73 |
return m_checker.Check (val->Get ()); |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
74 |
} |
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
75 |
|
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
76 |
|
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
77 |
private: |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
78 |
virtual bool DoSet (T *object, const U *v) const = 0; |
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
79 |
virtual bool DoGet (const T *object, U *v) const = 0; |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
80 |
CHECKER m_checker; |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
81 |
}; |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
82 |
|
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
83 |
template <typename T> |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
84 |
class ParamSpecHelperSimpleChecker |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
{ |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
public: |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
87 |
bool Check (const T &value) const {return true;} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
88 |
}; |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
89 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
90 |
template <typename BASE, typename V, typename T, typename U, typename CHECKER> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
91 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
92 |
DoMakeParamSpecHelperOne (U T::*memberVariable, CHECKER checker) |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
93 |
{ |
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
94 |
class MemberVariable : public ParamSpecHelper<BASE,T,V,CHECKER> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
95 |
{ |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
96 |
public: |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
97 |
MemberVariable (U T::*memberVariable, CHECKER checker) |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
98 |
: ParamSpecHelper<BASE,T,V,CHECKER> (checker), |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
99 |
m_memberVariable (memberVariable) |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
100 |
{} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
101 |
private: |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
102 |
virtual bool DoSet (T *object, const V *v) const { |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
103 |
(object->*m_memberVariable) = v->Get (); |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
104 |
return true; |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
105 |
} |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
106 |
virtual bool DoGet (const T *object, V *v) const { |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
107 |
v->Set (object->*m_memberVariable); |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
108 |
return true; |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
109 |
} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
110 |
|
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
111 |
U T::*m_memberVariable; |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
112 |
}; |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
113 |
return Ptr<ParamSpec> (new MemberVariable (memberVariable, checker), false); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
114 |
} |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
115 |
template <typename BASE, typename V, typename T, typename U> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
116 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
117 |
DoMakeParamSpecHelperOne (U T::*memberVariable) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
118 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
119 |
return DoMakeParamSpecHelperOne<BASE,V> (memberVariable, ParamSpecHelperSimpleChecker<U> ()); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
120 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
121 |
|
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
122 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
123 |
template <typename BASE, typename V, typename T, typename U, typename CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
124 |
Ptr<ParamSpec> |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
125 |
DoMakeParamSpecHelperOne (U (T::*getter) (void) const, |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
126 |
CHECKER checker) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
127 |
{ |
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
128 |
class MemberMethod : public ParamSpecHelper<BASE,T,V,CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
129 |
{ |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
130 |
public: |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
131 |
MemberMethod (U (T::*getter) (void) const, |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
132 |
CHECKER checker) |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
133 |
: ParamSpecHelper<BASE,T,V,CHECKER> (checker), |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
134 |
m_getter (getter) |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
135 |
{} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
136 |
private: |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
137 |
virtual bool DoSet (T *object, const V *v) const { |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
138 |
return false; |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
139 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
140 |
virtual bool DoGet (const T *object, V *v) const { |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
141 |
v->Set ((object->*m_getter) ()); |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
142 |
return true; |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
143 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
144 |
U (T::*m_getter) (void) const; |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
145 |
}; |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
146 |
return Ptr<ParamSpec> (new MemberMethod (getter, checker), false); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
147 |
} |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
148 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
149 |
template <typename BASE, typename V, typename T, typename U> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
150 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
151 |
DoMakeParamSpecHelperOne (U (T::*getter) (void) const) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
152 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
153 |
return DoMakeParamSpecHelperOne<BASE,V> (getter, ParamSpecHelperSimpleChecker<U> ()); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
154 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
155 |
|
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
156 |
|
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
157 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
158 |
template <typename BASE, typename V, typename T, typename U, typename CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
159 |
Ptr<ParamSpec> |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
160 |
DoMakeParamSpecHelperOne (void (T::*setter) (U), |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
161 |
CHECKER checker) |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
162 |
{ |
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
163 |
class MemberMethod : public ParamSpecHelper<BASE,T,V,CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
164 |
{ |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
165 |
public: |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
166 |
MemberMethod (void (T::*setter) (U), |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
167 |
CHECKER checker) |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
168 |
: ParamSpecHelper<BASE,T,V,CHECKER> (checker), |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
169 |
m_setter (setter) |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
170 |
{} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
171 |
private: |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
172 |
virtual bool DoSet (T *object, const V *v) const { |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
173 |
(object->*m_setter) (v->Get ()); |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
174 |
return true; |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
175 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
176 |
virtual void DoGet (const T *object, V *v) const { |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
177 |
return false; |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
178 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
179 |
void (T::*m_setter) (U); |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
180 |
}; |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
181 |
return Ptr<ParamSpec> (new MemberMethod (setter, checker), false); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
182 |
} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
183 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
184 |
template <typename BASE, typename V, typename T, typename U> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
185 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
186 |
DoMakeParamSpecHelperOne (void (T::*setter) (U)) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
187 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
188 |
return DoMakeParamSpecHelperOne<BASE,V> (setter, |
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
189 |
ParamSpecHelperSimpleChecker<typename TypeTraits<U>::ReferencedType> ()); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
190 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
191 |
|
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
192 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
193 |
template <typename BASE, typename W, typename T, typename U, typename V, typename CHECKER> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
194 |
Ptr<ParamSpec> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
195 |
DoMakeParamSpecHelperTwo (void (T::*setter) (U), |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
196 |
V (T::*getter) (void) const, |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
197 |
CHECKER checker = ParamSpecHelperSimpleChecker<V> ()) |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
198 |
{ |
2410
88dc7d4a6731
introduce top-level ParamSpec for bindings.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2408
diff
changeset
|
199 |
class MemberMethod : public ParamSpecHelper<BASE,T,W,CHECKER> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
200 |
{ |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
201 |
public: |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
202 |
MemberMethod (void (T::*setter) (U), |
2393
025986c8b400
untested templates rarely work.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2380
diff
changeset
|
203 |
V (T::*getter) (void) const, |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
204 |
CHECKER checker) |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
205 |
: ParamSpecHelper<BASE,T,W,CHECKER> (checker), |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
206 |
m_setter (setter), |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
207 |
m_getter (getter) |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
208 |
{} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
209 |
private: |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
210 |
virtual bool DoSet (T *object, const W *v) const { |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
211 |
(object->*m_setter) (v->Get ()); |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
212 |
return true; |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
213 |
} |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
214 |
virtual bool DoGet (const T *object, W *v) const { |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
215 |
v->Set ((object->*m_getter) ()); |
2403
759adf2fdf98
report more get/set errors
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2398
diff
changeset
|
216 |
return true; |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
217 |
} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
218 |
void (T::*m_setter) (U); |
2393
025986c8b400
untested templates rarely work.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2380
diff
changeset
|
219 |
V (T::*m_getter) (void) const; |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
220 |
}; |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
221 |
return Ptr<ParamSpec> (new MemberMethod (setter, getter, checker), false); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
222 |
} |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
223 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
224 |
template <typename BASE, typename W, typename T, typename U, typename V> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
225 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
226 |
DoMakeParamSpecHelperTwo (void (T::*setter) (U), |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
227 |
V (T::*getter) (void) const) |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
228 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
229 |
return DoMakeParamSpecHelperTwo<BASE,W> (setter, getter, ParamSpecHelperSimpleChecker<V> ()); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
230 |
} |
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
231 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
232 |
template <typename BASE, typename W, typename T, typename U, typename V, typename CHECKER> |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
233 |
Ptr<ParamSpec> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
234 |
DoMakeParamSpecHelperTwo (V (T::*getter) (void) const, |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
235 |
void (T::*setter) (U), |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
236 |
CHECKER checker) |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
237 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
238 |
return DoMakeParamSpecHelperTwo<BASE,W> (setter, getter, checker); |
2375
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
239 |
} |
6f8733409b3b
add back IntValue support
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2374
diff
changeset
|
240 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
241 |
template <typename BASE, typename W, typename T, typename U, typename V, typename CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
242 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
243 |
DoMakeParamSpecHelperTwo (V (T::*getter) (void) const, |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
244 |
void (T::*setter) (U)) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
245 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
246 |
return DoMakeParamSpecHelperTwo<BASE,W> (setter, getter); |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
247 |
} |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
248 |
|
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
249 |
template <typename BASE, typename V, typename T1> |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
250 |
Ptr<ParamSpec> |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
251 |
MakeParamSpecHelper (T1 a1) |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
252 |
{ |
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
253 |
return DoMakeParamSpecHelperOne<BASE,V> (a1); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
254 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
255 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
256 |
template <typename BASE, typename V, typename T1, typename T2> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
257 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
258 |
MakeParamSpecHelper (T1 a1, T2 a2) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
259 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
260 |
return DoMakeParamSpecHelperTwo<BASE,V> (a1, a2); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
261 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
262 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
263 |
template <typename BASE, typename V, typename T1, typename CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
264 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
265 |
MakeParamSpecHelperWithChecker (T1 a1, CHECKER checker) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
266 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
267 |
return DoMakeParamSpecHelperOne<BASE,V> (a1, checker); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
268 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
269 |
|
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
270 |
template <typename BASE, typename V, typename T1, typename T2, typename CHECKER> |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
271 |
Ptr<ParamSpec> |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
272 |
MakeParamSpecHelperWithChecker (T1 a1, T2 a2, CHECKER checker) |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
273 |
{ |
2424
217a447122a6
split initial value from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2423
diff
changeset
|
274 |
return DoMakeParamSpecHelperTwo<BASE,V> (a1, a2, checker); |
2408
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
275 |
} |
04fe819b3ad1
rework param-spec-helper code to avoid having to deal with pointers to member functions et al.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2403
diff
changeset
|
276 |
|
2371
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
277 |
} // namespace ns3 |
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
278 |
|
2118204a86e6
initial work on Value code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
279 |
#endif /* PARAM_SPEC_HELPER_H */ |