Generators.h 959 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef MANDEL_GENERATORS_H
  2. #define MANDEL_GENERATORS_H
  3. #include "MandelUtil.h"
  4. #include <vector>
  5. #include <utility>
  6. namespace mnd
  7. {
  8. class Generator;
  9. class AdaptiveGenerator;
  10. }
  11. class mnd::Generator
  12. {
  13. public:
  14. Generator(void) = default;
  15. virtual ~Generator(void);
  16. Generator(const Generator&) = delete;
  17. Generator& operator=(const Generator&) = delete;
  18. Generator(Generator&&) = default;
  19. Generator& operator=(Generator&&) = default;
  20. virtual void generate(const MandelInfo& info, float* data) = 0;
  21. };
  22. class mnd::AdaptiveGenerator : public Generator
  23. {
  24. std::vector<std::pair<Real, Generator*>> generators;
  25. public:
  26. AdaptiveGenerator(Generator* floatGen, Generator* doubleGen);
  27. AdaptiveGenerator(Generator* floatGen, Generator* doubleGen, Generator* quadGen);
  28. virtual ~AdaptiveGenerator(void) = default;
  29. virtual void generate(const MandelInfo& info, float* data);
  30. };
  31. #endif // MANDEL_GENERATORS_H