mirror of
https://github.com/catchorg/Catch2.git
synced 2024-12-23 11:43:29 +01:00
7c25dae9ea
The support is to be considered experimental, that is, the interfaces, the first party generators and helper functions can change or be removed at any point in time. Related to #850
40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
/*
|
|
* Created by Phil Nash on 26/6/2018.
|
|
*
|
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
|
|
#ifndef TWOBLUECUBES_CATCH_INTERFACES_GENERATORTRACKER_INCLUDED
|
|
#define TWOBLUECUBES_CATCH_INTERFACES_GENERATORTRACKER_INCLUDED
|
|
|
|
#include <memory>
|
|
|
|
namespace Catch {
|
|
|
|
namespace Generators {
|
|
class GeneratorBase {
|
|
protected:
|
|
size_t m_size = 0;
|
|
|
|
public:
|
|
GeneratorBase( size_t size ) : m_size( size ) {}
|
|
virtual ~GeneratorBase();
|
|
auto size() const -> size_t { return m_size; }
|
|
};
|
|
using GeneratorBasePtr = std::unique_ptr<GeneratorBase>;
|
|
|
|
} // namespace Generators
|
|
|
|
struct IGeneratorTracker {
|
|
virtual ~IGeneratorTracker();
|
|
virtual auto hasGenerator() const -> bool = 0;
|
|
virtual auto getGenerator() const -> Generators::GeneratorBasePtr const& = 0;
|
|
virtual void setGenerator( Generators::GeneratorBasePtr&& generator ) = 0;
|
|
virtual auto getIndex() const -> std::size_t = 0;
|
|
};
|
|
|
|
} // namespace Catch
|
|
|
|
#endif //TWOBLUECUBES_CATCH_INTERFACES_GENERATORTRACKER_INCLUDED
|