source: XMLIO_V2/dev/common/src/xmlio/data_output.hpp @ 286

Last change on this file since 286 was 286, checked in by ymipsl, 13 years ago

reprise en main de la version de H. Ozdoba. Correction de différentes erreurs de conception et bug.
Version NEMO operationnel en client/server, interoperabilita avec OASIS, reconstition de fichiers via netcdf4/HDF5

YM

File size: 2.3 KB
Line 
1#ifndef __XMLIO_DATA_OUTPUT__
2#define __XMLIO_DATA_OUTPUT__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "exception.hpp"
7#include "grid.hpp"
8#include "field.hpp"
9
10#include <mpi.h>
11#include <netcdf.h>
12
13namespace xmlioserver
14{
15   namespace io
16   {
17      /// ////////////////////// Déclarations ////////////////////// ///
18      class CDataOutput
19      {
20         public :
21
22            /// Définition de type ///
23            typedef enum { ONE_FILE = 0, MULTI_GROUP, MULTI_FILE } EDataOutputType;
24
25            /// Ecriture ///
26            void writeFile     (const boost::shared_ptr<tree::CFile>  file);
27            void closeFile     (void);
28            void writeField    (const boost::shared_ptr<tree::CField> field);
29            void writeFieldGrid(const boost::shared_ptr<tree::CField> field);
30            void writeFieldData(const boost::shared_ptr<tree::CField> field);
31
32            virtual void definition_start(void) = 0;
33            virtual void definition_end(void)   = 0;
34
35            virtual ~CDataOutput(void);
36
37         protected:
38
39            /// Ecriture ///
40            void writeGrid(const boost::shared_ptr<tree::CGrid>   grid);
41            void writeGrid(const boost::shared_ptr<tree::CDomain> domain,
42                           const boost::shared_ptr<tree::CAxis>   axis);
43            void writeGrid(const boost::shared_ptr<tree::CDomain> domain);
44
45            virtual void writeFile_       (const boost::shared_ptr<tree::CFile>     file)   = 0;
46            virtual void closeFile_       (void)                                            = 0;
47            virtual void writeField_      (const boost::shared_ptr<tree::CField>    field)  = 0;
48            virtual void writeFieldData_  (const boost::shared_ptr<tree::CField>    field)  = 0;
49            virtual void writeDomain_     (const boost::shared_ptr<tree::CDomain>   domain) = 0;
50            virtual void writeAxis_       (const boost::shared_ptr<tree::CAxis>     axis)   = 0;
51            virtual void writeTimeAxis_   (const boost::shared_ptr<tree::CField>    field,
52                                           const boost::shared_ptr<date::CCalendar> cal)    = 0;
53
54            /// Propriétés protégées ///
55            EDataOutputType type;
56
57      }; // class CDataOutput
58
59   } // namespace io
60} // namespace xmlioserver
61
62#endif //__XMLIO_DATA_OUTPUT__
Note: See TracBrowser for help on using the repository browser.