@@ -166,7 +166,7 @@ int main()
166166 using params_t = ValTrait<and_func_t >::params_t ;
167167 using results_t = ValTrait<and_func_t >::results_t ;
168168
169- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {a, b}));
169+ auto inputs = toWamr (lower_flat_values< params_t > (liftLowerContext, MAX_FLAT_PARAMS, {a, b}));
170170 auto output_size = 1 ;
171171 wasm_val_t outputs[output_size];
172172 auto call_result = wasm_runtime_call_wasm_a (exec_env, and_func, output_size, outputs, inputs.size (), inputs.data ());
@@ -186,7 +186,7 @@ int main()
186186 using params_t = ValTrait<add_func_t >::params_t ;
187187 using results_t = ValTrait<add_func_t >::results_t ;
188188
189- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {input1, input2}));
189+ auto inputs = toWamr (lower_flat_values< params_t > (liftLowerContext, MAX_FLAT_PARAMS, {input1, input2}));
190190 auto output_size = 1 ;
191191 wasm_val_t outputs[output_size];
192192 auto call_result = wasm_runtime_call_wasm_a (exec_env, add_func, output_size, outputs, inputs.size (), inputs.data ());
@@ -207,7 +207,7 @@ int main()
207207 using params_t = ValTrait<reverse_func_t >::params_t ;
208208 using results_t = ValTrait<reverse_func_t >::results_t ;
209209
210- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {input1}));
210+ auto inputs = toWamr (lower_flat_values< params_t > (liftLowerContext, MAX_FLAT_PARAMS, {input1}));
211211 auto output_size = 1 ;
212212 wasm_val_t outputs[output_size];
213213 auto call_result = wasm_runtime_call_wasm_a (exec_env, reverse_func, output_size, outputs, inputs.size (), inputs.data ());
@@ -218,6 +218,32 @@ int main()
218218 auto call_reverse_result = call_reverse (" Hello World!" );
219219 call_reverse (call_reverse_result);
220220
221+ using lots_func_t = func_t <uint32_t (
222+ string_t , string_t , string_t , string_t , string_t , string_t , string_t , string_t ,
223+ string_t , string_t , string_t , string_t , string_t , string_t , string_t , string_t , string_t )>;
224+ auto lots_func = wasm_runtime_lookup_function (module_inst, " example:sample/strings#lots" );
225+ auto lots_cleanup_func = wasm_runtime_lookup_function (module_inst, " cabi_post_example:sample/strings#lots" );
226+ lots_func_t call_lots = [&](string_t p1, string_t p2, string_t p3, string_t p4, string_t p5, string_t p6, string_t p7, string_t p8,
227+ string_t p9, string_t p10, string_t p11, string_t p12, string_t p13, string_t p14, string_t p15, string_t p16, string_t p17) -> uint32_t
228+ {
229+ auto flat_ft_lower = func::flatten<lots_func_t >(liftLowerContext, func::ContextType::Lower);
230+ auto flat_ft_lift = func::flatten<lots_func_t >(liftLowerContext, func::ContextType::Lift);
231+
232+ using params_t = ValTrait<lots_func_t >::params_t ;
233+ using results_t = ValTrait<lots_func_t >::results_t ;
234+
235+ auto inputs = toWamr (lower_flat_values<params_t >(liftLowerContext, MAX_FLAT_PARAMS, {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17}));
236+ auto inputs_size = inputs.size ();
237+ auto output_size = 1 ;
238+ wasm_val_t outputs[output_size];
239+ auto call_result = wasm_runtime_call_wasm_a (exec_env, lots_func, output_size, outputs, inputs.size (), inputs.data ());
240+ auto result = std::get<0 >(lift_flat_values<results_t >(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t >(output_size, outputs)));
241+ std::cout << " lots_string(" << p1 << " , " << p2 << " , " << p3 << " , " << p4 << " , " << p5 << " , " << p6 << " , " << p7 << " , " << p8
242+ << " , " << p9 << " , " << p10 << " , " << p11 << " , " << p12 << " , " << p13 << " , " << p14 << " , " << p15 << " , " << p16 << " , " << p17 << " ): " << result << std::endl;
243+ return result;
244+ };
245+ auto call_lots_result = call_lots (" p1" , " p2" , " p3" , " p4" , " p5" , " p6" , " p7" , " p8" , " p9" , " p10" , " p11" , " p12" , " p13" , " p14" , " p15" , " p16" , " p17" );
246+
221247 using reverse_tuple_func_t = func_t <tuple_t <string_t , bool_t >(tuple_t <bool_t , string_t >)>;
222248 auto reverse_tuple_func = wasm_runtime_lookup_function (module_inst, " example:sample/tuples#reverse" );
223249 auto reverse_tuple_cleanup_func = wasm_runtime_lookup_function (module_inst, " cabi_post_example:sample/tuples#reverse" );
@@ -226,7 +252,7 @@ int main()
226252 using params_t = ValTrait<reverse_tuple_func_t >::params_t ;
227253 using results_t = ValTrait<reverse_tuple_func_t >::results_t ;
228254
229- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {a}));
255+ auto inputs = toWamr (lower_flat_values< params_t > (liftLowerContext, 100 + MAX_FLAT_PARAMS, {a}));
230256 auto output_size = 1 ;
231257 wasm_val_t outputs[output_size];
232258 auto call_result = wasm_runtime_call_wasm_a (exec_env, reverse_tuple_func, output_size, outputs, inputs.size (), inputs.data ());
@@ -246,7 +272,7 @@ int main()
246272 using params_t = ValTrait<list_filter_bool_func_t >::params_t ;
247273 using results_t = ValTrait<list_filter_bool_func_t >::results_t ;
248274
249- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {a}));
275+ auto inputs = toWamr (lower_flat_values< params_t > (liftLowerContext, MAX_FLAT_PARAMS, {a}));
250276 auto output_size = 1 ;
251277 wasm_val_t outputs[output_size];
252278 auto call_result = wasm_runtime_call_wasm_a (exec_env, list_filter_bool_func, output_size, outputs, inputs.size (), inputs.data ());
0 commit comments