| 475 | } |
| 476 | |
| 477 | int LITE_set_finish_callback( |
| 478 | LiteNetwork network, const LiteFinishCallback finish_callback) { |
| 479 | LITE_CAPI_BEGIN(); |
| 480 | LITE_ASSERT(network, "The network pass to LITE api is null"); |
| 481 | auto lite_finish_callback = |
| 482 | [finish_callback](const std::unordered_map< |
| 483 | std::string, |
| 484 | std::pair<lite::IO, std::shared_ptr<lite::Tensor>>>& |
| 485 | outputs_map) -> void { |
| 486 | std::vector<LiteIO> ios; |
| 487 | std::vector<LiteTensor> io_tensors; |
| 488 | size_t nr_io = 0; |
| 489 | for (const auto& io : outputs_map) { |
| 490 | nr_io++; |
| 491 | auto&& lite_io = io.second.first; |
| 492 | ios.push_back( |
| 493 | {lite_io.name.c_str(), lite_io.is_host, lite_io.io_type, |
| 494 | convert_to_clayout(lite_io.config_layout)}); |
| 495 | io_tensors.push_back(io.second.second.get()); |
| 496 | } |
| 497 | finish_callback(ios.data(), io_tensors.data(), nr_io); |
| 498 | }; |
| 499 | static_cast<lite::Network*>(network)->set_finish_callback(lite_finish_callback); |
| 500 | LITE_CAPI_END(); |
| 501 | } |
| 502 | |
| 503 | int LITE_set_finish_callback_with_userdata( |
| 504 | LiteNetwork network, const LiteFinishCallbackWithData finish_callback, |