@@ -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 ());
@@ -179,83 +179,109 @@ int main()
179179 call_and (true , false );
180180 call_and (true , true );
181181
182- using add_func_t = func_t <float64_t (float64_t , float64_t )>;
183- auto add_func = wasm_runtime_lookup_function (module_inst, " example:sample/floats#add" );
184- add_func_t call_add = [&](float64_t input1, float64_t input2) -> float64_t
185- {
186- using params_t = ValTrait<add_func_t >::params_t ;
187- using results_t = ValTrait<add_func_t >::results_t ;
188-
189- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {input1, input2}));
190- auto output_size = 1 ;
191- wasm_val_t outputs[output_size];
192- auto call_result = wasm_runtime_call_wasm_a (exec_env, add_func, output_size, outputs, inputs.size (), inputs.data ());
193- auto result = std::get<0 >(lift_flat_values<results_t >(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t >(output_size, outputs)));
194- std::cout << " add_func(" << input1 << " , " << input2 << " ): " << result << std::endl;
195- return result;
196- };
197- call_add (3.1 , 0.2 );
198-
199- using reverse_func_t = func_t <string_t (string_t )>;
200- auto reverse_func = wasm_runtime_lookup_function (module_inst, " example:sample/strings#reverse" );
201- auto reverse_cleanup_func = wasm_runtime_lookup_function (module_inst, " cabi_post_example:sample/strings#reverse" );
202- reverse_func_t call_reverse = [&](string_t input1) -> string_t
203- {
204- auto flat_ft_lower = func::flatten<reverse_func_t >(liftLowerContext, func::ContextType::Lower);
205- auto flat_ft_lift = func::flatten<reverse_func_t >(liftLowerContext, func::ContextType::Lift);
206-
207- using params_t = ValTrait<reverse_func_t >::params_t ;
208- using results_t = ValTrait<reverse_func_t >::results_t ;
209-
210- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {input1}));
211- auto output_size = 1 ;
212- wasm_val_t outputs[output_size];
213- auto call_result = wasm_runtime_call_wasm_a (exec_env, reverse_func, output_size, outputs, inputs.size (), inputs.data ());
214- auto result = std::get<0 >(lift_flat_values<results_t >(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t >(output_size, outputs)));
215- std::cout << " reverse_string(" << input1 << " ): " << result << std::endl;
216- return result;
217- };
218- auto call_reverse_result = call_reverse (" Hello World!" );
219- call_reverse (call_reverse_result);
220-
221- using reverse_tuple_func_t = func_t <tuple_t <string_t , bool_t >(tuple_t <bool_t , string_t >)>;
222- auto reverse_tuple_func = wasm_runtime_lookup_function (module_inst, " example:sample/tuples#reverse" );
223- auto reverse_tuple_cleanup_func = wasm_runtime_lookup_function (module_inst, " cabi_post_example:sample/tuples#reverse" );
224- reverse_tuple_func_t call_reverse_tuple = [&](tuple_t <bool_t , string_t > a) -> tuple_t <string_t , bool_t >
225- {
226- using params_t = ValTrait<reverse_tuple_func_t >::params_t ;
227- using results_t = ValTrait<reverse_tuple_func_t >::results_t ;
228-
229- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {a}));
230- auto output_size = 1 ;
231- wasm_val_t outputs[output_size];
232- auto call_result = wasm_runtime_call_wasm_a (exec_env, reverse_tuple_func, output_size, outputs, inputs.size (), inputs.data ());
233- auto result = std::get<0 >(lift_flat_values<results_t >(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t >(output_size, outputs)));
234- std::cout << " reverse_tuple(" << std::get<0 >(a) << " , " << std::get<1 >(a) << " ): " << std::get<0 >(result) << " , " << std::get<1 >(result) << std::endl;
235- call_result = wasm_runtime_call_wasm_a (exec_env, reverse_tuple_cleanup_func, 0 , nullptr , 1 , outputs);
236- return result;
237- };
238- auto call_reverse_tuple_result = call_reverse_tuple ({false , " Hello World!" });
239- // call_reverse_tuple({std::get<1>(call_reverse_tuple_result), std::get<0>(call_reverse_tuple_result}));
240-
241- using list_filter_bool_func_t = func_t <list_t <string_t >(list_t <variant_t <bool_t , string_t >>)>;
242- auto list_filter_bool_func = wasm_runtime_lookup_function (module_inst, " example:sample/lists#filter-bool" );
243- auto list_filter_bool_cleanup_func = wasm_runtime_lookup_function (module_inst, " cabi_post_example:sample/lists#filter-bool" );
244- auto call_list_filter_bool = [&](list_t <variant_t <bool_t , string_t >> a) -> list_t <string_t >
245- {
246- using params_t = ValTrait<list_filter_bool_func_t >::params_t ;
247- using results_t = ValTrait<list_filter_bool_func_t >::results_t ;
248-
249- auto inputs = toWamr (lower_flat_values (liftLowerContext, MAX_FLAT_PARAMS, params_t {a}));
250- auto output_size = 1 ;
251- wasm_val_t outputs[output_size];
252- auto call_result = wasm_runtime_call_wasm_a (exec_env, list_filter_bool_func, output_size, outputs, inputs.size (), inputs.data ());
253- auto result = std::get<0 >(lift_flat_values<results_t >(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t >(output_size, outputs)));
254- std::cout << " list_filter_bool(" << a.size () << " ): " << result.size () << std::endl;
255- call_result = wasm_runtime_call_wasm_a (exec_env, list_filter_bool_cleanup_func, 0 , nullptr , 1 , outputs);
256- return result;
257- };
258- auto call_list_filter_bool_result = call_list_filter_bool ({{false }, {" Hello World!" }});
182+ // using add_func_t = func_t<float64_t(float64_t, float64_t)>;
183+ // auto add_func = wasm_runtime_lookup_function(module_inst, "example:sample/floats#add");
184+ // add_func_t call_add = [&](float64_t input1, float64_t input2) -> float64_t
185+ // {
186+ // using params_t = ValTrait<add_func_t>::params_t;
187+ // using results_t = ValTrait<add_func_t>::results_t;
188+
189+ // auto inputs = toWamr(lower_flat_values<params_t>(liftLowerContext, MAX_FLAT_PARAMS, {input1, input2}));
190+ // auto output_size = 1;
191+ // wasm_val_t outputs[output_size];
192+ // auto call_result = wasm_runtime_call_wasm_a(exec_env, add_func, output_size, outputs, inputs.size(), inputs.data());
193+ // auto result = std::get<0>(lift_flat_values<results_t>(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t>(output_size, outputs)));
194+ // std::cout << "add_func(" << input1 << ", " << input2 << "): " << result << std::endl;
195+ // return result;
196+ // };
197+ // call_add(3.1, 0.2);
198+
199+ // using reverse_func_t = func_t<string_t(string_t)>;
200+ // auto reverse_func = wasm_runtime_lookup_function(module_inst, "example:sample/strings#reverse");
201+ // auto reverse_cleanup_func = wasm_runtime_lookup_function(module_inst, "cabi_post_example:sample/strings#reverse");
202+ // reverse_func_t call_reverse = [&](string_t input1) -> string_t
203+ // {
204+ // auto flat_ft_lower = func::flatten<reverse_func_t>(liftLowerContext, func::ContextType::Lower);
205+ // auto flat_ft_lift = func::flatten<reverse_func_t>(liftLowerContext, func::ContextType::Lift);
206+
207+ // using params_t = ValTrait<reverse_func_t>::params_t;
208+ // using results_t = ValTrait<reverse_func_t>::results_t;
209+
210+ // auto inputs = toWamr(lower_flat_values<params_t>(liftLowerContext, MAX_FLAT_PARAMS, {input1}));
211+ // auto output_size = 1;
212+ // wasm_val_t outputs[output_size];
213+ // auto call_result = wasm_runtime_call_wasm_a(exec_env, reverse_func, output_size, outputs, inputs.size(), inputs.data());
214+ // auto result = std::get<0>(lift_flat_values<results_t>(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t>(output_size, outputs)));
215+ // std::cout << "reverse_string(" << input1 << "): " << result << std::endl;
216+ // return result;
217+ // };
218+ // auto call_reverse_result = call_reverse("Hello World!");
219+ // call_reverse(call_reverse_result);
220+
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+
247+ // using reverse_tuple_func_t = func_t<tuple_t<string_t, bool_t>(tuple_t<bool_t, string_t>)>;
248+ // auto reverse_tuple_func = wasm_runtime_lookup_function(module_inst, "example:sample/tuples#reverse");
249+ // auto reverse_tuple_cleanup_func = wasm_runtime_lookup_function(module_inst, "cabi_post_example:sample/tuples#reverse");
250+ // reverse_tuple_func_t call_reverse_tuple = [&](tuple_t<bool_t, string_t> a) -> tuple_t<string_t, bool_t>
251+ // {
252+ // using params_t = ValTrait<reverse_tuple_func_t>::params_t;
253+ // using results_t = ValTrait<reverse_tuple_func_t>::results_t;
254+
255+ // auto inputs = toWamr(lower_flat_values<params_t>(liftLowerContext, 100 + MAX_FLAT_PARAMS, {a}));
256+ // auto output_size = 1;
257+ // wasm_val_t outputs[output_size];
258+ // auto call_result = wasm_runtime_call_wasm_a(exec_env, reverse_tuple_func, output_size, outputs, inputs.size(), inputs.data());
259+ // auto result = std::get<0>(lift_flat_values<results_t>(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t>(output_size, outputs)));
260+ // std::cout << "reverse_tuple(" << std::get<0>(a) << ", " << std::get<1>(a) << "): " << std::get<0>(result) << ", " << std::get<1>(result) << std::endl;
261+ // call_result = wasm_runtime_call_wasm_a(exec_env, reverse_tuple_cleanup_func, 0, nullptr, 1, outputs);
262+ // return result;
263+ // };
264+ // auto call_reverse_tuple_result = call_reverse_tuple({false, "Hello World!"});
265+ // // call_reverse_tuple({std::get<1>(call_reverse_tuple_result), std::get<0>(call_reverse_tuple_result}));
266+
267+ // using list_filter_bool_func_t = func_t<list_t<string_t>(list_t<variant_t<bool_t, string_t>>)>;
268+ // auto list_filter_bool_func = wasm_runtime_lookup_function(module_inst, "example:sample/lists#filter-bool");
269+ // auto list_filter_bool_cleanup_func = wasm_runtime_lookup_function(module_inst, "cabi_post_example:sample/lists#filter-bool");
270+ // auto call_list_filter_bool = [&](list_t<variant_t<bool_t, string_t>> a) -> list_t<string_t>
271+ // {
272+ // using params_t = ValTrait<list_filter_bool_func_t>::params_t;
273+ // using results_t = ValTrait<list_filter_bool_func_t>::results_t;
274+
275+ // auto inputs = toWamr(lower_flat_values<params_t>(liftLowerContext, MAX_FLAT_PARAMS, {a}));
276+ // auto output_size = 1;
277+ // wasm_val_t outputs[output_size];
278+ // auto call_result = wasm_runtime_call_wasm_a(exec_env, list_filter_bool_func, output_size, outputs, inputs.size(), inputs.data());
279+ // auto result = std::get<0>(lift_flat_values<results_t>(liftLowerContext, MAX_FLAT_RESULTS, fromWamr<results_t>(output_size, outputs)));
280+ // std::cout << "list_filter_bool(" << a.size() << "): " << result.size() << std::endl;
281+ // call_result = wasm_runtime_call_wasm_a(exec_env, list_filter_bool_cleanup_func, 0, nullptr, 1, outputs);
282+ // return result;
283+ // };
284+ // auto call_list_filter_bool_result = call_list_filter_bool({{false}, {"Hello World!"}});
259285
260286 wasm_runtime_destroy_exec_env (exec_env);
261287 wasm_runtime_deinstantiate (module_inst);
0 commit comments