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 GeneratorUntypedBase {
|
||
|
public:
|
||
|
GeneratorUntypedBase() = default;
|
||
|
virtual ~GeneratorUntypedBase();
|
||
|
// Attempts to move the generator to the next element
|
||
|
//
|
||
|
// Returns true iff the move succeeded (and a valid element
|
||
|
// can be retrieved).
|
||
|
virtual bool next() = 0;
|
||
|
};
|
||
|
using GeneratorBasePtr = std::unique_ptr<GeneratorUntypedBase>;
|
||
|
|
||
|
} // 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;
|
||
|
};
|
||
|
|
||
|
} // namespace Catch
|
||
|
|
||
|
#endif //TWOBLUECUBES_CATCH_INTERFACES_GENERATORTRACKER_INCLUDED
|