source: XMLIO_V2/dev/dev_rv/src/xmlio/data_treatment.hpp @ 208

Last change on this file since 208 was 208, checked in by hozdoba, 13 years ago
File size: 2.5 KB
Line 
1#ifndef __XMLIO_CDataTreatment__
2#define __XMLIO_CDataTreatment__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "node_type.hpp"
7#include "mpi_manager.hpp"
8#include "data_output.hpp"
9
10namespace xmlioserver
11{
12   namespace data
13   {
14      /// ////////////////////// Déclarations ////////////////////// ///
15      class CDataTreatment
16      {
17         public :
18
19            /// Construteurs ///
20            CDataTreatment
21               (boost::shared_ptr<CContext> _ctxt =
22                  CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()));
23
24            CDataTreatment(const CDataTreatment & data_treatment);       // Not implemented yet.
25            CDataTreatment(const CDataTreatment * const data_treatment); // Not implemented yet.
26
27            /// Accesseurs ///
28            const boost::shared_ptr<CContext> getCurrentContext(void) const;
29            const std::vector<boost::shared_ptr<CFile> > & getEnabledFiles  (void) const;
30
31            /// Creation des sorties ///
32            template <class T> void createDataOutput(void);
33
34            /// Destructeur ///
35            ~CDataTreatment(void);
36
37         private :
38
39            /// Traitements ///
40            void doTreatment(void);
41
42            void findAllEnabledFields(void);
43            void solveAllGridRef(void);
44            void solveAllOperation(void);
45            void solveAllInheritance(void) const;
46            void findEnabledFiles(void);
47
48            /// Propriétés privées ///
49            boost::shared_ptr<CContext> currentContext;
50            std::vector<boost::shared_ptr<CFile> > enabledFiles;
51
52      }; // CDataTreatment
53
54      //----------------------------------------------------------------
55
56      template <class T>
57         void CDataTreatment::createDataOutput(void)
58      {
59         std::vector<boost::shared_ptr<CFile> >::const_iterator
60            it = this->enabledFiles.begin(), end = this->enabledFiles.end();
61         
62         for (; it != end; it++)
63         {
64            boost::shared_ptr<CFile> file = *it;
65            StdString filename = (!file->name.isEmpty())
66                               ? file->name.getValue() : file->getId();
67            StdOStringStream oss;
68            oss << "wk/data/" << filename << "_node" << comm::CMPIManager::GetCommRank() << ".nc";
69            boost::shared_ptr<io::CDataOutput> dout(new T(oss.str(), false));
70            file->initializeDataOutput(dout);
71         }
72      }
73
74   } // namespace data
75
76} // namespace xmlioserver
77
78#endif // __XMLIO_CDataTreatment__
Note: See TracBrowser for help on using the repository browser.