1
0

Generators.h 987 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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::map<Real, Generator*, std::greater<Real>> generators;
  25. public:
  26. AdaptiveGenerator(void) = default;
  27. AdaptiveGenerator(Generator* floatGen, Generator* doubleGen);
  28. virtual ~AdaptiveGenerator(void) = default;
  29. void addGenerator(const Real& precision, Generator& generator);
  30. virtual void generate(const MandelInfo& info, float* data);
  31. };
  32. #endif // MANDEL_GENERATORS_H