source: XMLIO_V2/dev/dev_rv/context.hpp @ 96

Last change on this file since 96 was 96, checked in by hozdoba, 13 years ago

Suppression de nombreuses fuites mémoires (200kbytes)

File size: 4.0 KB
Line 
1#ifndef __CONTEXT__
2#define __CONTEXT__
3
4     
5namespace XMLIOSERVER
6{ 
7   class Context : public ObjectTemplate<Context>
8   {
9      public:
10           
11         Context(void) : ObjectTemplate<Context>()
12         {/* Ne rien faire de plus */}               
13         Context(const string& _id) : ObjectTemplate<Context>(_id)
14         {/* Ne rien faire de plus */}
15         
16         static void SetCurrentContext(const string& id)
17         {
18            // On modifie le context courrant pour tout les ObjectTemplate
19            Context::SetContext(id);
20            FieldGroup::SetContext(id);
21            Field::SetContext(id);
22         }
23         
24         void parse (XMLNode& _node)
25         {
26            THashAttributes attributes;
27           
28            /// PARSING POUR GESTION DES ENFANTS
29            if (_node.getElementName().compare(string("context")))
30               WARNING("Le noeud est mal nommé mais sera traité comme un context !");
31           
32            if (!(_node.goToChildElement()))
33               WARNING("Le context ne contient pas d'enfant !"); 
34            else
35            {
36               //////////////////////////////////////
37              do { // Parcours des contexts pour traitement.       
38                           
39                  string name = _node.getElementName();
40                  attributes.clear();
41                  _node.getAttributes(attributes);   
42                 
43                  if (attributes.end() != attributes.find("id"))
44                  { WARNING("Le noeud de définition possÚde un identifiant, ce dernier ne sera pas pris en compte lors du traitement !"); }
45                 
46                  if (name.compare("field_definition") == 0)
47                  { // Parsing pour la définition des champs.
48                 
49                     if (FieldDefinition::HasObject("field_definition")) 
50                        WARNING("Le context possÚde déjà un noeud de définition de champs, le dernier défini complétera le premier !");
51                     
52                     fieldDef = (FieldDefinition*)&FieldDefinition::CreateObject("field_definition"); // << Conversion possible car la classe Field n'a pas de propriétés.
53                     fieldDef->parse(_node);
54
55                     continue;
56                  }
57                  else if (name.compare("file_definition") == 0)
58                  { // Parsing pour la définition des fichiers.                 
59                     INFO("Le parsing des définitions de fichiers n'est pas encore implémenté");
60                  } 
61                  else if (name.compare("axis_definition") == 0)
62                  { // Parsing pour la définition des axes.
63                     INFO("Le parsing des définitions d'axes n'est pas encore implémenté");
64                  }
65                  else if (name.compare("grid_definition") == 0)
66                  { // Parsing pour la définition des grilles.
67                     INFO("Le parsing des définitions de grilles n'est pas encore implémenté");
68                  } 
69                  else
70                     WARNING("La définition est invalide, seules les champs, grilles, axes et fichiers peuvent être définis !");
71                     
72                     
73                  // Traitement file, grid et axis à compléter.
74               } while (_node.goToNextElement());
75               //////////////////////////////////////
76               _node.goToParentElement(); // Retour au parent
77            }
78           
79            return;
80         }
81         
82         virtual const char* getName(void) const {return ("Context"); }
83         
84         FieldDefinition* getFieldDefinition(void) { return (this->fieldDef); }
85                 
86         ~Context()
87         { delete fieldDef; }
88         
89      protected:
90     
91      private:
92     
93         FieldDefinition*  fieldDef;
94         /*FileDefinition* fileDef;
95         AxisDefinition*   axisDef;
96         GridDefinition*   gridDef;*/
97
98     
99   }; //class Context
100}// namespace XMLIOSERVER
101
102#endif  // __CONTEXT__
Note: See TracBrowser for help on using the repository browser.