#pragma once #include #include namespace fesa { // Executes independent index-addressed work without exposing the backend. // Callers own output storage and must confine each invocation to its index. class ParallelFor { public: virtual ~ParallelFor() = default; virtual void execute( std::size_t count, const std::function& body) const = 0; }; class SerialParallelFor final : public ParallelFor { public: void execute( std::size_t count, const std::function& body) const override; }; class TbbParallelFor final : public ParallelFor { public: void execute( std::size_t count, const std::function& body) const override; }; } // namespace fesa