1 #ifndef LIBGEODECOMP_IO_SIMPLEINITIALIZER_H 2 #define LIBGEODECOMP_IO_SIMPLEINITIALIZER_H 3 4 #include <libgeodecomp/config.h> 5 #include <libgeodecomp/io/initializer.h> 6 7 namespace LibGeoDecomp { 8 9 /** 10 * This convenience class implements some straightforward functions of 11 * Initializer. Generally users will only need to implement grid(). 12 */ 13 template<typename CELL_TYPE> 14 class SimpleInitializer : public Initializer<CELL_TYPE> 15 { 16 public: 17 friend class Serialization; 18 typedef typename Initializer<CELL_TYPE>::Topology Topology; 19 const static int DIM = Topology::DIM; 20 SimpleInitializer()21 SimpleInitializer() 22 { } 23 24 // fixme: writers AND initializers should have a clone() function, preferably implemented via CRTP 25 explicit SimpleInitializer( 26 const Coord<DIM>& dimensions, 27 const unsigned steps = 300) : dimensions(dimensions)28 dimensions(dimensions), 29 steps(steps) 30 {} 31 32 gridDimensions()33 Coord<DIM> gridDimensions() const 34 { 35 return dimensions; 36 } 37 maxSteps()38 unsigned maxSteps() const 39 { 40 return steps; 41 } 42 startStep()43 unsigned startStep() const 44 { 45 return 0; 46 } 47 48 protected: 49 Coord<DIM> dimensions; 50 unsigned steps; 51 }; 52 53 } 54 55 #endif 56