source: XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp @ 105

Last change on this file since 105 was 105, checked in by hozdoba, 14 years ago

Commit intermédiaire.
Ajout d'un systÚme d'indentation trÚs simplifié pour les flux de sortie.
Un problÚme corrigé - seg. fault en cas d'absence de field_definition dans un context donnée.

File size: 2.5 KB
Line 
1#ifndef __FIELD__
2#define __FIELD__
3
4using XMLIOSERVER::XML::XMLNode;
5using XMLIOSERVER::XML::THashAttributes;
6
7namespace XMLIOSERVER
8{
9   class Field : public ObjectTemplate<Field>, public FieldAttribut
10   {
11      public:
12     
13         Field(void) : ObjectTemplate<Field>(), FieldAttribut()
14                        {/* Ne rien faire de plus */}                   
15                        Field(const string& _id) : ObjectTemplate<Field>(_id), FieldAttribut()
16         {/* Ne rien faire de plus */} 
17         
18         friend ostream& operator<< (ostream& out, const Field& c) 
19         {
20            out << IncIndent << "<" << c.getName();
21            if(c.hasId()) out << " id=\"" <<  c.getId() << "\"";
22            for(unsigned int i = 0; i < c.attrList.getVectorSize(); i++) out << *c.attrList.getVector()[i];
23            out << "/>" << DecEndl;
24                           
25            return (out);
26         }
27         
28         void setAttributes(const THashAttributes& _attr)
29         {
30            for (THashAttributes::ConstIterator it = _attr.begin(); it != _attr.end(); it++)
31               if ((*it).first.compare(string("id")))
32               // Non prise en compte de l'identifiant lors de l'affectation des attributs.
33                  this->setSAttribut((*it).first, (*it).second);
34         }
35         
36         void addAttributes(const StrHashMap<BaseAttribut>& _pattr)
37         {
38            StrHashMap<BaseAttribut>& _lattr = getAttributList();
39           
40            //_pattr contient les attributs du parent, _lattr les attributs locaux.
41           
42            for(unsigned int i = 0; i < _lattr.getVectorSize(); i++)
43            {
44               if(_lattr.getVector()[i]->_hasValue() or !_pattr.getVector()[i]->_hasValue()) continue;
45               _lattr.getVector()[i]->assignValue(_pattr.getVector()[i]);
46            }
47         }
48         
49         const char* getName(void) const {return ("Field"); }   
50
51                        void parse (XMLNode& _node)
52                        {
53            string name = _node.getElementName();           
54            THashAttributes attributes;
55           
56            /// PARSING GESTION DES ATTRIBUTS ///
57            _node.getAttributes(attributes); 
58            this->setAttributes(attributes);
59            attributes.clear();
60           
61            /// PARSING POUR GESION DES ENFANTS
62            // Rien à faire.
63           
64            return;
65         }
66         
67         ~Field(void) 
68         { /* Ne rien faire de plus */ }   
69     
70   }; // class Field
71     
72}; // namespace XMLIOSERVER
73   
74#endif // __FIELD__
Note: See TracBrowser for help on using the repository browser.