Skip to content
Snippets Groups Projects
Commit da393b38 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Fix Embedded data tuples as return type

parent 9c3cc5b9
No related branches found
No related tags found
1 merge request!167Improve fluxing based remapping
...@@ -114,10 +114,21 @@ class BuiltinFunctionEmbedderBase<FX(Args...)> : public IBuiltinFunctionEmbedder ...@@ -114,10 +114,21 @@ class BuiltinFunctionEmbedderBase<FX(Args...)> : public IBuiltinFunctionEmbedder
} }
template <typename T> template <typename T>
PUGS_INLINE std::shared_ptr<IDataHandler> PUGS_INLINE EmbeddedData
_createHandler(std::shared_ptr<T> data) const _createHandler(std::shared_ptr<T> data) const
{ {
return std::make_shared<DataHandler<T>>(data); return EmbeddedData{std::make_shared<DataHandler<T>>(data)};
}
template <typename T>
PUGS_INLINE std::vector<EmbeddedData>
_createHandler(std::vector<std::shared_ptr<T>> data) const
{
std::vector<EmbeddedData> embedded(data.size());
for (size_t i_data = 0; i_data < data.size(); ++i_data) {
embedded[i_data] = EmbeddedData(std::make_shared<DataHandler<T>>(data[i_data]));
}
return embedded;
} }
template <typename ResultT> template <typename ResultT>
...@@ -127,7 +138,7 @@ class BuiltinFunctionEmbedderBase<FX(Args...)> : public IBuiltinFunctionEmbedder ...@@ -127,7 +138,7 @@ class BuiltinFunctionEmbedderBase<FX(Args...)> : public IBuiltinFunctionEmbedder
if constexpr (is_data_variant_v<std::decay_t<ResultT>>) { if constexpr (is_data_variant_v<std::decay_t<ResultT>>) {
return std::move(result); return std::move(result);
} else { } else {
return EmbeddedData(_createHandler(std::move(result))); return _createHandler(std::move(result));
} }
} }
...@@ -327,7 +338,7 @@ class BuiltinFunctionEmbedder<FX(Args...)> : public BuiltinFunctionEmbedderBase< ...@@ -327,7 +338,7 @@ class BuiltinFunctionEmbedder<FX(Args...)> : public BuiltinFunctionEmbedderBase<
std::apply(m_f, t); std::apply(m_f, t);
return {}; return {};
} else { } else {
return EmbeddedData(this->template _createHandler(std::apply(m_f, t))); return this->template _createHandler(std::apply(m_f, t));
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment