@@ -16,6 +16,11 @@ namespace tao::json
1616 int private_b2 = 22 ;
1717 int private_b3 = 23 ;
1818 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 ;
1924 };
2025
2126 [[nodiscard]] int get_a1 ( const type_f& f )
@@ -68,10 +73,45 @@ namespace tao::json
6873 return f.private_b4 ;
6974 }
7075
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+ }
75115
76116 template <>
77117 struct traits < type_f >
@@ -80,7 +120,11 @@ namespace tao::json
80120 binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b1" ), &get_b1, &set_b1 >,
81121 binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( " b2" ), &get_b2, &set_b2 >,
82122 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 > >
84128 {
85129 TAO_JSON_DEFAULT_KEY ( " f" );
86130 };
@@ -89,7 +133,7 @@ namespace tao::json
89133 {
90134 const type_f f;
91135 const value v = produce::to_value ( f );
92- TEST_ASSERT ( v.get_object ().size () == 6 );
136+ TEST_ASSERT ( v.get_object ().size () == 10 );
93137
94138 TEST_ASSERT ( v.get_object ().at ( " a1" ).as < int >() == 111 );
95139 TEST_ASSERT ( v.get_object ().at ( " a2" ).as < int >() == 112 );
@@ -98,6 +142,13 @@ namespace tao::json
98142 TEST_ASSERT ( v.get_object ().at ( " b2" ).as < int >() == 222 );
99143 TEST_ASSERT ( v.get_object ().at ( " b3" ).as < int >() == 223 );
100144 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 );
101152 }
102153
103154} // namespace tao::json
0 commit comments