@@ -207,6 +207,8 @@ namespace winrt::test_component::implementation
207207
208208 hstring Class::InInt32Array (array_view<int32_t const > value)
209209 {
210+ simulate_rpc_behavior (value);
211+
210212 hstring result;
211213
212214 for (auto && v : value)
@@ -218,6 +220,8 @@ namespace winrt::test_component::implementation
218220 }
219221 hstring Class::InStringArray (array_view<hstring const > value)
220222 {
223+ simulate_rpc_behavior (value);
224+
221225 hstring result;
222226
223227 for (auto && v : value)
@@ -229,6 +233,8 @@ namespace winrt::test_component::implementation
229233 }
230234 hstring Class::InObjectArray (array_view<Windows::Foundation::IInspectable const > value)
231235 {
236+ simulate_rpc_behavior (value);
237+
232238 hstring result;
233239
234240 for (auto && v : value)
@@ -240,6 +246,8 @@ namespace winrt::test_component::implementation
240246 }
241247 hstring Class::InStringableArray (array_view<Windows::Foundation::IStringable const > value)
242248 {
249+ simulate_rpc_behavior (value);
250+
243251 hstring result;
244252
245253 for (auto && v : value)
@@ -251,6 +259,8 @@ namespace winrt::test_component::implementation
251259 }
252260 hstring Class::InStructArray (array_view<Struct const > value)
253261 {
262+ simulate_rpc_behavior (value);
263+
254264 hstring result;
255265
256266 for (auto && v : value)
@@ -262,6 +272,8 @@ namespace winrt::test_component::implementation
262272 }
263273 hstring Class::InEnumArray (array_view<Signed const > value)
264274 {
275+ simulate_rpc_behavior (value);
276+
265277 hstring result;
266278
267279 for (auto && v : value)
@@ -304,68 +316,98 @@ namespace winrt::test_component::implementation
304316
305317 void Class::RefInt32Array (array_view<int32_t > value)
306318 {
307- int32_t counter{};
319+ simulate_rpc_behavior (value);
320+
321+ if (value.size ())
322+ {
323+ int32_t counter{};
308324
309- std::generate (value.begin (), value.end () - 1 , [&]
310- {
311- return ++counter;
312- });
325+ std::generate (value.begin (), value.end () - 1 , [&]
326+ {
327+ return ++counter;
328+ });
329+ }
313330 }
314331
315332 void Class::RefStringArray (array_view<hstring> value)
316333 {
317- int32_t counter{};
334+ simulate_rpc_behavior (value);
335+
336+ if (value.size ())
337+ {
338+ int32_t counter{};
318339
319- std::generate (value.begin (), value.end () - 1 , [&]
320- {
321- return hstring{ std::to_wstring (++counter) };
322- });
340+ std::generate (value.begin (), value.end () - 1 , [&]
341+ {
342+ return hstring{ std::to_wstring (++counter) };
343+ });
344+ }
323345 }
324346
325347 void Class::RefObjectArray (array_view<Windows::Foundation::IInspectable> value)
326348 {
327- int32_t counter{} ;
349+ simulate_rpc_behavior (value) ;
328350
329- std::generate (value.begin (), value.end () - 1 , [&]
330- {
331- return make<Value>(++counter);
332- });
351+ if (value.size ())
352+ {
353+ int32_t counter{};
354+
355+ std::generate (value.begin (), value.end () - 1 , [&]
356+ {
357+ return make<Value>(++counter);
358+ });
359+ }
333360 }
334361
335362 void Class::RefStringableArray (array_view<Windows::Foundation::IStringable> value)
336363 {
337- int32_t counter{} ;
364+ simulate_rpc_behavior (value) ;
338365
339- std::generate (value.begin (), value.end () - 1 , [&]
340- {
341- return make<Value>(++counter);
342- });
366+ if (value.size ())
367+ {
368+ int32_t counter{};
369+
370+ std::generate (value.begin (), value.end () - 1 , [&]
371+ {
372+ return make<Value>(++counter);
373+ });
374+ }
343375 }
344376
345377 void Class::RefStructArray (array_view<Struct> value)
346378 {
347- int32_t counter{} ;
379+ simulate_rpc_behavior (value) ;
348380
349- std::generate (value.begin (), value.end () - 1 , [&]
350- {
351- return Struct
381+ if (value.size ())
382+ {
383+ int32_t counter{};
384+
385+ std::generate (value.begin (), value.end () - 1 , [&]
352386 {
353- hstring{ std::to_wstring (++counter) },
354- hstring{ std::to_wstring (++counter) }
355- };
356- });
387+ return Struct
388+ {
389+ hstring{ std::to_wstring (++counter) },
390+ hstring{ std::to_wstring (++counter) }
391+ };
392+ });
393+ }
357394 }
358395
359396 void Class::RefEnumArray (array_view<Signed> value)
360397 {
361- Signed counter{ Signed::First } ;
398+ simulate_rpc_behavior (value) ;
362399
363- std::generate (value.begin (), value.end () - 1 , [&]
364- {
365- auto result = counter;
366- counter = static_cast <Signed>(static_cast <int32_t >(counter) + 1 );
367- return result;
368- });
400+ if (value.size ())
401+ {
402+ Signed counter{ Signed::First };
403+
404+ std::generate (value.begin (), value.end () - 1 , [&]
405+ {
406+ auto result = counter;
407+ counter = static_cast <Signed>(static_cast <int32_t >(counter) + 1 );
408+ return result;
409+ });
410+ }
369411 }
370412
371413 com_array<int32_t > Class::ReturnInt32Array ()
0 commit comments