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