Initial commit

This commit is contained in:
Alexander Kobjolke 2025-03-13 22:36:51 +01:00
commit 4f4397b3e1
48 changed files with 2002 additions and 0 deletions

View file

@ -0,0 +1,31 @@
#pragma once
#include "../../generator/generator.h"
#include "AbstractVectorFactory.h"
#include "fill_with.h"
#include <algorithm>
namespace atlas::collection {
template <typename T>
class SingleThreadedVectorFactory : public AbstractVectorFactory<T> {
public:
SingleThreadedVectorFactory(std::unique_ptr<generator::Generator<T>> generator)
: m_gen { std::move(generator) }
{
}
SingleThreadedVectorFactory(SingleThreadedVectorFactory const&) = delete;
SingleThreadedVectorFactory(SingleThreadedVectorFactory&&) = delete;
SingleThreadedVectorFactory& operator=(SingleThreadedVectorFactory const&) = delete;
SingleThreadedVectorFactory& operator=(SingleThreadedVectorFactory&&) = delete;
auto fill(std::vector<T>& v) -> void override final
{
detail::fill_with(v.begin(), v.end(), [this]() { return m_gen->next(); });
}
private:
std::unique_ptr<generator::Generator<T>> m_gen;
};
}