MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ apply()

template<typename Executor , ComputeData DataType>
template<typename Func >
requires std::invocable<Func, const DataType&>
auto MayaFlux::Yantra::FluentExecutor< Executor, DataType >::apply ( Func &&  func)
inline

Apply custom transformation function.

Template Parameters
FuncFunction type
Parameters
funcTransformation function to apply
Returns
New FluentExecutor with transformed data

Definition at line 148 of file OperationChain.hpp.

149 {
150 if (!m_successful) {
151 throw std::runtime_error("Cannot continue chain after failed operation");
152 }
153
154 using ResultType = std::invoke_result_t<Func, const DataType&>;
155
156 try {
157 auto result = std::forward<Func>(func)(m_data);
158 auto next = FluentExecutor<Executor, ResultType>(m_executor, std::move(result));
159 next.m_operation_history = m_operation_history;
160 next.m_operation_history.push_back("custom_function");
161 return next;
162 } catch (const std::exception& e) {
163 m_successful = false;
164 record_error(std::string("Custom function failed: ") + e.what());
165 throw;
166 }
167 }
std::shared_ptr< Executor > m_executor
std::vector< std::string > m_operation_history
void record_error(const std::string &error)