source: XMLIO_V2/dev/dev_rv/src/xmlio/node/field.hpp @ 181

Last change on this file since 181 was 181, checked in by hozdoba, 12 years ago
File size: 3.1 KB
Line 
1#ifndef __XMLIO_CField__
2#define __XMLIO_CField__
3
4/// xmlioserver headers ///
5#include "xmlioserver_spl.hpp"
6#include "group_factory.hpp"
7
8#include "functor.hpp"
9#include "functor_type.hpp"
10
11#include "declare_group.hpp"
12
13namespace xmlioserver {
14namespace tree {
15   
16   /// ////////////////////// Déclarations ////////////////////// ///
17
18   class CFieldGroup;
19   class CFieldAttributes;
20   class CField;
21
22   class CFile;
23   class CGrid;
24
25   ///--------------------------------------------------------------
26
27   // Declare/Define CFieldAttribute
28   BEGIN_DECLARE_ATTRIBUTE_MAP(CField)
29#  include "field_attribute.conf"
30   END_DECLARE_ATTRIBUTE_MAP(CField)
31
32   ///--------------------------------------------------------------
33   class CField
34      : public CObjectTemplate<CField>
35      , public CFieldAttributes
36   {
37         /// friend ///
38         friend class CFile;
39
40         /// typedef ///
41         typedef CObjectTemplate<CField>   SuperClass;
42         typedef CFieldAttributes SuperClassAttribute;
43
44      public :
45
46         typedef CFieldAttributes RelAttributes;
47         typedef CFieldGroup      RelGroup;
48
49         /// Constructeurs ///
50         CField(void);
51         explicit CField(const StdString & id);
52         CField(const CField & field);       // Not implemented yet.
53         CField(const CField * const field); // Not implemented yet.
54
55         /// Accesseurs ///
56         boost::shared_ptr<CField> getDirectFieldReference(void) const;
57         const boost::shared_ptr<CField> getBaseFieldReference(void) const;
58         const std::vector<boost::shared_ptr<CField> > & getAllReference(void) const;
59
60         boost::shared_ptr<CGrid> getRelGrid(void) const ;
61         boost::shared_ptr<CFile> getRelFile(void) const ;
62
63         const StdString & getBaseFieldId(void) const;
64
65         /// Mutateur ///
66         void setRelFile(const boost::shared_ptr<CFile> _file);
67
68      public :
69
70         /// Test ///
71         bool hasDirectFieldReference(void) const;
72
73         /// Traitements ///
74         void solveRefInheritance(void);
75         void solveGridReference(void);
76         void solveOperation(void);
77
78         virtual void fromBinary(StdIStream & is);
79
80         /// Destructeur ///
81         virtual ~CField(void);
82
83         /// Accesseurs statiques ///
84         static StdString GetName(void);
85         static StdString GetDefName(void);
86         
87         static ENodeType GetType(void);
88
89      private :
90
91         /// Propriétés privées ///
92         boost::shared_ptr<CField> baseRefObject;
93         std::vector<boost::shared_ptr<CField> > refObject;
94
95         boost::shared_ptr<CGrid> grid ;
96         boost::shared_ptr<CFile> file;
97
98         func::CFunctor * foperation;
99
100   }; // class CField
101
102   ///--------------------------------------------------------------
103
104   // Declare/Define CFieldGroup and CFieldDefinition
105   DECLARE_GROUP(CField);
106
107   } // namespace tree
108
109   ///-----------------------------------------------------------------
110
111   template <>
112      void CGroupTemplate<CField, CFieldGroup, CFieldAttributes>::solveRefInheritance(void);
113
114} // namespace xmlioserver
115
116#endif // __XMLIO_CField__
Note: See TracBrowser for help on using the repository browser.