Generators.h 1002 B

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