@@ -16,6 +16,11 @@ namespace tao::json
16
16
int private_b2 = 22 ;
17
17
int private_b3 = 23 ;
18
18
int private_b4 = 24 ;
19
+
20
+ int private_c1 = 31 ;
21
+ int private_c2 = 32 ;
22
+ int private_c3 = 33 ;
23
+ int private_c4 = 34 ;
19
24
};
20
25
21
26
[[nodiscard]] int get_a1 ( const type_f& f )
@@ -68,10 +73,45 @@ namespace tao::json
68
73
return f.private_b4 ;
69
74
}
70
75
71
- // void set_b( type_f& f, int& b ) noexcept
72
- // {
73
- // f.private_b = b;
74
- // }
76
+ [[nodiscard]] int get_c1 ( const type_f& f ) noexcept
77
+ {
78
+ return f.private_c1 + 300 ;
79
+ }
80
+
81
+ void set_c1 ( type_f& f, const int c ) noexcept
82
+ {
83
+ f.private_c1 = c;
84
+ }
85
+
86
+ [[nodiscard]] int get_c2 ( const type_f& f )
87
+ {
88
+ return f.private_c2 + 300 ;
89
+ }
90
+
91
+ void set_c2 ( type_f& f, const int & c ) noexcept
92
+ {
93
+ f.private_c2 = c;
94
+ }
95
+
96
+ [[nodiscard]] int get_c3 ( const type_f& f ) noexcept
97
+ {
98
+ return f.private_c3 + 300 ;
99
+ }
100
+
101
+ void set_c3 ( type_f& f, int && c ) noexcept
102
+ {
103
+ f.private_c3 = c;
104
+ }
105
+
106
+ [[nodiscard]] int get_c4 ( const type_f& f )
107
+ {
108
+ return f.private_c4 + 300 ;
109
+ }
110
+
111
+ void set_c4 ( type_f& f, const int & c )
112
+ {
113
+ f.private_c4 = c;
114
+ }
75
115
76
116
template <>
77
117
struct traits < type_f >
@@ -80,7 +120,11 @@ namespace tao::json
80
120
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b1" ), &get_b1, &set_b1 >,
81
121
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b2" ), &get_b2, &set_b2 >,
82
122
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b3" ), &get_b3, &set_b3 >,
83
- binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b4" ), &get_b4, &set_b4 > >
123
+ binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b4" ), &get_b4, &set_b4 >,
124
+ binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " c1" ), &get_c1, &set_c1 >,
125
+ binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " c2" ), &get_c2, &set_c2 >,
126
+ binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " c3" ), &get_c3, &set_c3 >,
127
+ binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " c4" ), &get_c4, &set_c4 > >
84
128
{
85
129
TAO_JSON_DEFAULT_KEY ( " f" );
86
130
};
@@ -89,7 +133,7 @@ namespace tao::json
89
133
{
90
134
const type_f f;
91
135
const value v = produce::to_value ( f );
92
- TEST_ASSERT ( v.get_object ().size () == 6 );
136
+ TEST_ASSERT ( v.get_object ().size () == 10 );
93
137
94
138
TEST_ASSERT ( v.get_object ().at ( " a1" ).as < int >() == 111 );
95
139
TEST_ASSERT ( v.get_object ().at ( " a2" ).as < int >() == 112 );
@@ -98,6 +142,13 @@ namespace tao::json
98
142
TEST_ASSERT ( v.get_object ().at ( " b2" ).as < int >() == 222 );
99
143
TEST_ASSERT ( v.get_object ().at ( " b3" ).as < int >() == 223 );
100
144
TEST_ASSERT ( v.get_object ().at ( " b4" ).as < int >() == 224 );
145
+
146
+ TEST_ASSERT ( v.get_object ().at ( " c1" ).as < int >() == 331 );
147
+ TEST_ASSERT ( v.get_object ().at ( " c2" ).as < int >() == 332 );
148
+ TEST_ASSERT ( v.get_object ().at ( " c3" ).as < int >() == 333 );
149
+ TEST_ASSERT ( v.get_object ().at ( " c4" ).as < int >() == 334 );
150
+
151
+ // v.to( f );
101
152
}
102
153
103
154
} // namespace tao::json
0 commit comments