Changeset 109


Ignore:
Timestamp:
06/18/10 15:46:34 (14 years ago)
Author:
hozdoba
Message:

Ajout de contrÎles sur les dépendances circulaires, passages des attributs lors de l'héritage par réf.

Location:
XMLIO_V2/dev/dev_rv/src/XMLIO
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/XMLIO/field.hpp

    r108 r109  
    2121         { 
    2222            if(!field_ref._hasValue()) return (NULL); 
    23             string refname = field_ref; 
    24             if (!CField::HasObject(refname)) 
    25             { WARNING("Référence invalide sur l'objet "+GetName()+" nommé \""+refname+"\""); return (NULL);} 
     23            if (!CField::HasObject(field_ref)) 
     24            { WARNING("Référence invalide sur l'objet "+GetName()+" nommé \""+((string)field_ref)+"\""); return (NULL);} 
    2625 
    2726            return (&CField::GetObject(field_ref)); 
     
    3837            attributes.clear(); 
    3938 
    40             /// PARSING POUR GESION DES ENFANTS 
     39            /// PARSING POUR GESION DES ENFANTS /// 
    4140            // Rien à faire. 
    4241         } 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/file.hpp

    r108 r109  
    4848 
    4949         void resolveFieldRefInheritance(void) 
    50          { 
     50         { // Résolution des héritages par référence de chacun des champs contenus dans le fichier. 
    5151            std::vector<CField*> allF; getAllFields(allF); 
    5252            for (unsigned int i = 0; i < allF.size(); i++) allF[i]->resolveRefInheritance(); 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio.hpp

    r106 r109  
    77 
    88#include <vector> 
    9 #include <deque> 
     9#include <set> 
    1010 
    1111#include <iostream> 
     
    3131#include "file_attribut.hpp" 
    3232 
    33 #include "field.hpp"      
     33#include "field.hpp" 
    3434 
    35   
    36 #include "xmlio_group_template.hpp"  
     35 
     36#include "xmlio_group_template.hpp" 
    3737#include "field_group.hpp" 
    3838 
    39 #include "file.hpp"   
     39#include "file.hpp" 
    4040#include "file_group.hpp" 
    41      
     41 
    4242#include "context.hpp" 
    43 #include "xmlio_xml_parser.hpp"  
     43#include "xmlio_xml_parser.hpp" 
    4444 
    45 #endif // __XMLIO__  
     45#endif // __XMLIO__ 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio_object_template.hpp

    r108 r109  
    5050         virtual void resolveRefInheritance(void) 
    5151         { 
    52             std::vector<T*> allRef; 
     52            std::set<T*> sset; 
    5353            T* refer = (T*)this; 
    5454            // On remonte le fil des héritages par référence (Boucle infinie). 
    5555            while((refer = refer->getReference()) != NULL) 
    56                allRef.insert(allRef.begin(), baseObject = refer); 
    57  
    58             // Gestion des attributs ici. 
     56            { 
     57               if(sset.end() != sset.find(refer)) 
     58               { WARNING ("Dépendance circulaire stoppée pour l'objet de type "+T::GetName()+" sur \""+refer->getId()+"\" !"); break; } 
     59               addAttributes(*refer); 
     60               sset.insert(baseObject = refer); 
     61            } 
    5962         } 
    6063 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/xmlio_xml_node.hpp

    r108 r109  
    1919using std::pair; 
    2020using std::vector; 
    21 using std::deque; 
    2221 
    2322using std::istream; 
Note: See TracChangeset for help on using the changeset viewer.