12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- ///////////////////////////////////////////////////////////////////////////////////////
- /// \file guessserializer.h
- /// \brief Classes which handle (de)serializing LPJ-GUESS state
- ///
- /// $Date: 2018-02-02 18:01:35 +0100 (ven, 02 fév 2018) $
- ///
- ///////////////////////////////////////////////////////////////////////////////////////
- #ifndef LPJ_GUESS_GUESS_SERIALIZER_H
- #define LPJ_GUESS_GUESS_SERIALIZER_H
- #include <vector>
- class Gridcell;
- /// Takes care of saving LPJ-GUESS state to disk
- class GuessSerializer {
- public:
- /// Constructor, creates state file and meta data
- /** \param directory Where to create the files
- * \param my_rank Unique integer identifying this process in a multi
- * process job.
- * \param num_processes The number of processes involved in the job
- */
- GuessSerializer(const char* directory, int my_rank, int num_processes);
- /// Finalizes and closes the state file
- virtual ~GuessSerializer();
- /// Adds the state for a gridcell to the state file
- void serialize_gridcell(const Gridcell& gridcell);
- private:
- // Implementation hidden in cpp file
- struct Impl;
- Impl* pimpl;
- };
- /// Takes care of reading in LPJ-GUESS state from disk
- class GuessDeserializer {
- public:
- /// Constructor, does some basic checking of the meta data
- GuessDeserializer(const char* directory);
- /// Closes opened files etc.
- virtual ~GuessDeserializer();
- /// Reads in a single grid cell from the state file
- void deserialize_gridcell(Gridcell& gridcell);
- /// Reads in multiple grid cells from the state file
- /** If many grid cells should be deserialized at once, this one is better
- * than many calls to deserialize_gridcell since this one will avoid
- * unnecessary file seeks.
- */
- void deserialize_gridcells(const std::vector<Gridcell*>& gridcells);
- private:
- // Implementation hidden in cpp file
- struct Impl;
- Impl* pimpl;
- };
- #endif // LPJ_GUESS_GUESS_SERIALIZER_H
|