author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Wed, 20 Feb 2008 20:24:52 +0100 | |
changeset 2435 | 3128175f5866 |
parent 2433 | 3a98e1db7f80 |
child 2436 | 23415bac7eaf |
permissions | -rw-r--r-- |
2422 | 1 |
#ifndef VALUE_HELPER_H |
2 |
#define VALUE_HELPER_H |
|
3 |
||
4 |
#include "class-value-helper.h" |
|
5 |
||
6 |
#define VALUE_HELPER_HEADER_1(type) \ |
|
2433
3a98e1db7f80
PValue -> Attribute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2427
diff
changeset
|
7 |
type (Attribute value); \ |
3a98e1db7f80
PValue -> Attribute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2427
diff
changeset
|
8 |
operator Attribute () const; |
2422 | 9 |
|
10 |
#define VALUE_HELPER_HEADER_2(type) \ |
|
11 |
class type##Value : public Value {}; \ |
|
2435
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
12 |
class type##Accessor : public Accessor {}; \ |
2427
9245ec163111
split checker from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2424
diff
changeset
|
13 |
Ptr<AttributeChecker> Make##type##Checker (void); \ |
2422 | 14 |
template <typename T1> \ |
2435
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
15 |
Ptr<Accessor> Make##type##Accessor (T1 a1) \ |
2422 | 16 |
{ \ |
2435
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
17 |
return MakeClassValueHelperAccessor< type , \ |
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
18 |
type##Value, type##Accessor> (a1); \ |
2422 | 19 |
} \ |
20 |
template <typename T1, typename T2> \ |
|
2435
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
21 |
Ptr<Accessor> Make##type##Accessor (T1 a1, T2 a2) \ |
2422 | 22 |
{ \ |
2435
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
23 |
return MakeClassValueHelperAccessor<type, \ |
3128175f5866
ParamSpec -> Accessor
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2433
diff
changeset
|
24 |
type##Value,type##Accessor> (a1, a2); \ |
2422 | 25 |
} |
26 |
||
27 |
#define VALUE_HELPER_CPP(type) \ |
|
2427
9245ec163111
split checker from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2424
diff
changeset
|
28 |
Ptr<AttributeChecker> Make##type##Checker (void) \ |
9245ec163111
split checker from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2424
diff
changeset
|
29 |
{ \ |
9245ec163111
split checker from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2424
diff
changeset
|
30 |
return MakeSimpleAttributeChecker<type> (); \ |
9245ec163111
split checker from ParamSpec.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2424
diff
changeset
|
31 |
} \ |
2433
3a98e1db7f80
PValue -> Attribute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2427
diff
changeset
|
32 |
type::type (Attribute value) \ |
2422 | 33 |
{ \ |
34 |
*this = ClassValueHelperExtractFrom<type,type##Value> (value); \ |
|
35 |
} \ |
|
2433
3a98e1db7f80
PValue -> Attribute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
2427
diff
changeset
|
36 |
type::operator Attribute () const \ |
2422 | 37 |
{ \ |
38 |
return ClassValueHelperConvertTo<type,type##Value> (this); \ |
|
39 |
} |
|
40 |
||
41 |
#endif /* VALUE_HELPER_H */ |