void NP_InferWithRequestedOutputs()

in source/neuropod/bindings/c/c_api.cc [90:119]


void NP_InferWithRequestedOutputs(NP_Neuropod *              model,
                                  const NP_NeuropodValueMap *inputs,
                                  size_t                     noutputs,
                                  const char **              requested_outputs,
                                  NP_NeuropodValueMap **     outputs,
                                  NP_Status *                status)
{
    try
    {
        // By default empty collection of requested_ouputs expected.
        // Note that it copies C-strings (0-terminated) from given array.
        // User must guarantee that noutputs and requested_outputs address valid data..
        std::vector<std::string> rout;
        if (requested_outputs != nullptr)
        {
            for (size_t i = 0; i < noutputs; ++i)
            {
                rout.emplace_back(requested_outputs[i]);
            }
        }
        *outputs         = new NP_NeuropodValueMap();
        (*outputs)->data = std::move(*model->model->infer(inputs->data, rout));
        NP_ClearStatus(status);
    }
    catch (std::exception &e)
    {
        status->code    = NEUROPOD_ERROR;
        status->message = e.what();
    }
}