@@ -142,61 +142,7 @@ struct ReadDestUpdate
142
142
};
143
143
144
144
145
- template <typename LocalType, typename Input, typename ReadDest>
146
- decltype (auto ) CustomReadField(TypeList<std::shared_ptr<LocalType>>,
147
- Priority<0 >,
148
- InvokeContext& invoke_context,
149
- Input&& input,
150
- ReadDest&& read_dest)
151
- {
152
- return read_dest.update ([&](auto & value) {
153
- if (!input.has ()) {
154
- value.reset ();
155
- } else if (value) {
156
- ReadField (TypeList<LocalType>(), invoke_context, input, ReadDestUpdate (*value));
157
- } else {
158
- ReadField (TypeList<LocalType>(), invoke_context, input,
159
- ReadDestEmplace (TypeList<LocalType>(), [&](auto &&... args) -> auto & {
160
- value = std::make_shared<LocalType>(std::forward<decltype (args)>(args)...);
161
- return *value;
162
- }));
163
- }
164
- });
165
- }
166
145
167
- template <typename LocalType, typename Input, typename ReadDest>
168
- decltype (auto ) CustomReadField(TypeList<LocalType*>,
169
- Priority<1 >,
170
- InvokeContext& invoke_context,
171
- Input&& input,
172
- ReadDest&& read_dest)
173
- {
174
- return read_dest.update ([&](auto & value) {
175
- if (value) {
176
- ReadField (TypeList<LocalType>(), invoke_context, std::forward<Input>(input), ReadDestUpdate (*value));
177
- }
178
- });
179
- }
180
-
181
- template <typename LocalType, typename Input, typename ReadDest>
182
- decltype (auto ) CustomReadField(TypeList<std::shared_ptr<const LocalType>>,
183
- Priority<1 >,
184
- InvokeContext& invoke_context,
185
- Input&& input,
186
- ReadDest&& read_dest)
187
- {
188
- return read_dest.update ([&](auto & value) {
189
- if (!input.has ()) {
190
- value.reset ();
191
- return ;
192
- }
193
- ReadField (TypeList<LocalType>(), invoke_context, std::forward<Input>(input),
194
- ReadDestEmplace (TypeList<LocalType>(), [&](auto &&... args) -> auto & {
195
- value = std::make_shared<LocalType>(std::forward<decltype (args)>(args)...);
196
- return *value;
197
- }));
198
- });
199
- }
200
146
201
147
template <typename LocalType, typename Input, typename ReadDest>
202
148
decltype (auto ) CustomReadField(TypeList<std::vector<LocalType>>,
@@ -664,26 +610,6 @@ void CustomBuildField(TypeList<Impl&>,
664
610
output.set (CustomMakeProxyServer<Interface, Impl>(invoke_context, std::shared_ptr<Impl>(&value, [](Impl*){})));
665
611
}
666
612
667
- template <typename LocalType, typename Value, typename Output>
668
- void CustomBuildField (TypeList<LocalType*>, Priority<3 >, InvokeContext& invoke_context, Value&& value, Output&& output)
669
- {
670
- if (value) {
671
- BuildField (TypeList<LocalType>(), invoke_context, output, *value);
672
- }
673
- }
674
-
675
- template <typename LocalType, typename Value, typename Output>
676
- void CustomBuildField (TypeList<std::shared_ptr<LocalType>>,
677
- Priority<1 >,
678
- InvokeContext& invoke_context,
679
- Value&& value,
680
- Output&& output)
681
- {
682
- if (value) {
683
- BuildField (TypeList<LocalType>(), invoke_context, output, *value);
684
- }
685
- }
686
-
687
613
// Adapter to let BuildField overloads methods work set & init list elements as
688
614
// if they were fields of a struct. If BuildField is changed to use some kind of
689
615
// accessor class instead of calling method pointers, then then maybe this could
@@ -909,31 +835,6 @@ void CustomBuildField(TypeList<LocalType> local_type,
909
835
BuildOne<0 >(local_type, invoke_context, output.init (), value);
910
836
}
911
837
912
- // ! PassField override for C++ pointer arguments.
913
- template <typename Accessor, typename LocalType, typename ServerContext, typename Fn, typename ... Args>
914
- void PassField (Priority<1 >, TypeList<LocalType*>, ServerContext& server_context, const Fn& fn, Args&&... args)
915
- {
916
- const auto & params = server_context.call_context .getParams ();
917
- const auto & input = Make<StructField, Accessor>(params);
918
-
919
- if (!input.want ()) {
920
- fn.invoke (server_context, std::forward<Args>(args)..., nullptr );
921
- return ;
922
- }
923
-
924
- InvokeContext& invoke_context = server_context;
925
- Decay<LocalType> param;
926
-
927
- MaybeReadField (std::integral_constant<bool , Accessor::in>(), TypeList<LocalType>(), invoke_context, input,
928
- ReadDestUpdate (param));
929
-
930
- fn.invoke (server_context, std::forward<Args>(args)..., ¶m);
931
-
932
- auto && results = server_context.call_context .getResults ();
933
- MaybeBuildField (std::integral_constant<bool , Accessor::out>(), TypeList<LocalType>(), invoke_context,
934
- Make<StructField, Accessor>(results), param);
935
- }
936
-
937
838
// ! PassField override for callable interface reference arguments.
938
839
template <typename Accessor, typename LocalType, typename ServerContext, typename Fn, typename ... Args>
939
840
auto PassField (Priority<1 >, TypeList<LocalType&>, ServerContext& server_context, Fn&& fn, Args&&... args)
0 commit comments