source: XIOS/trunk/src/node/file.hpp @ 369

Last change on this file since 369 was 369, checked in by ymipsl, 12 years ago

Major Update

  • redesign Type and attribute manipulation
  • add enumerate type and attribute
  • use blitz class array instead of boost class array

YM

File size: 4.0 KB
Line 
1#ifndef __XMLIO_CFile__
2#define __XMLIO_CFile__
3
4/// xios headers ///
5#include "xmlioserver_spl.hpp"
6#include "field.hpp"
7#include "data_output.hpp"
8#include "declare_group.hpp"
9#include "date.hpp"
10#include "attribute_enum.hpp"
11#include "attribute_enum_impl.hpp"
12
13
14
15namespace xios {
16   
17   /// ////////////////////// Déclarations ////////////////////// ///
18
19   class CFileGroup;
20   class CFileAttributes;
21   class CFile;
22
23   ///--------------------------------------------------------------
24
25   // Declare/Define CFileAttribute
26   BEGIN_DECLARE_ATTRIBUTE_MAP(CFile)
27#  include "file_attribute.conf"
28   END_DECLARE_ATTRIBUTE_MAP(CFile)
29
30   ///--------------------------------------------------------------
31
32   class CFile
33      : public CObjectTemplate<CFile>
34      , public CFileAttributes
35   {
36         /// typedef ///
37         typedef CObjectTemplate<CFile>   SuperClass;
38         typedef CFileAttributes SuperClassAttribute;
39     
40      public :
41         enum EEventId
42         {
43           EVENT_ID_ADD_FIELD=0,EVENT_ID_ADD_FIELD_GROUP
44         } ;
45         
46         typedef CFileAttributes RelAttributes;
47         typedef CFileGroup      RelGroup;
48
49         /// Constructeurs ///
50         CFile(void);
51         explicit CFile(const StdString & id);
52         CFile(const CFile & file);       // Not implemented yet.
53         CFile(const CFile * const file); // Not implemented yet.
54
55         /// Accesseurs ///
56         boost::shared_ptr<CDataOutput> getDataOutput(void) const;
57         CFieldGroup* getVirtualFieldGroup(void) const;
58         std::vector<CField*> getAllFields(void) const;
59
60         std::vector<CField* > getEnabledFields(int default_outputlevel = 5,
61                                                int default_level = 1,
62                                                bool default_enabled = true);
63
64      public :
65
66         /// Mutateurs ///
67         void setVirtualFieldGroup(CFieldGroup* newVFieldGroup);
68         void setVirtualFieldGroup(void);
69
70         void createHeader(void);
71         void close(void) ;
72         
73         /// Traitements ///
74         virtual void solveDescInheritance(const CAttributeMap * const parent = 0);
75         void solveFieldRefInheritance(void);
76         void solveEFGridRef(void);
77         void solveEFOperation(void);
78
79         /// Destructeur ///
80         virtual ~CFile(void);
81
82         /// Autres ///
83         virtual void parse(xml::CXMLNode & node);
84         virtual StdString toString(void) const;
85         
86//         virtual void toBinary  (StdOStream & os) const;
87//         virtual void fromBinary(StdIStream & is);
88
89         /// Accesseurs statiques ///
90         static StdString GetName(void);
91         static StdString GetDefName(void);
92         
93         static ENodeType GetType(void);
94         
95         bool AllDomainEmpty ;
96         CField* addField(const string& id="") ;
97         CFieldGroup* addFieldGroup(const string& id="") ;
98         void sendAddField(const string& id="") ;
99         void sendAddFieldGroup(const string& id="") ;
100         static void recvAddField(CEventServer& event) ;
101         void recvAddField(CBufferIn& buffer) ;
102         static void recvAddFieldGroup(CEventServer& event) ;
103         void recvAddFieldGroup(CBufferIn& buffer) ;
104         static bool dispatchEvent(CEventServer& event) ;
105         bool isSyncTime(void) ;
106         bool checkSplit(void) ;
107         bool checkSync(void) ;
108         void checkFile(void) ;
109         void initFile(void) ;
110         CDate* lastSync ;
111         CDate* lastSplit ;
112         CDuration syncFreq ;
113         CDuration splitFreq ;
114         CDuration outputFreq ;
115         int nbDomain ;
116         bool isOpen ;
117      private :
118
119         /// Propriétés privées ///
120         CFieldGroup* vFieldGroup;
121         boost::shared_ptr<CDataOutput> data_out;
122         std::vector<CField*> enabledFields;
123
124   }; // class CFile
125
126   ///--------------------------------------------------------------
127
128   // Declare/Define CFileGroup and CFileDefinition
129   DECLARE_GROUP(CFile);
130
131   ///--------------------------------------------------------------
132
133} // namespace xios
134
135#endif // __XMLIO_CFile__
Note: See TracBrowser for help on using the repository browser.