Ignore:
Timestamp:
06/18/10 14:33:19 (14 years ago)
Author:
hozdoba
Message:

Début de prise en charge des références (sans contrÎle ni transmission d'attribut pour le moment).

File:
1 edited

Legend:

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

    r107 r108  
    2222      public : 
    2323 
    24  
    2524         friend ostream& operator<< (ostream& out, const T& c) 
    2625         { 
    2726            const AttributRegistrar &ar = c; 
     27 
     28            if (c.baseObject != NULL) 
     29               out <<  IncIndent << "<-- Reference resolved for the following "+ T::GetName() +" : \"" << c.baseObject->getId() << "\" -->" << DecEndl << std::endl; 
     30 
    2831            if (c.hasChild()) 
    2932            { 
     
    3942         string getName(void) const {return (T::GetName()); } 
    4043 
     44         virtual T* getReference(void) const { return (NULL); } 
     45 
    4146         virtual bool hasChild(void) const { return (false); } 
    4247         virtual void printChild(ostream& out) const { /* Ne rien faire de plus */ } 
     48 
    4349         virtual void resolveDescInheritance(const AttributRegistrar* _parent = 0) { addAttributes(*_parent); } 
     50         virtual void resolveRefInheritance(void) 
     51         { 
     52            std::vector<T*> allRef; 
     53            T* refer = (T*)this; 
     54            // On remonte le fil des héritages par référence (Boucle infinie). 
     55            while((refer = refer->getReference()) != NULL) 
     56               allRef.insert(allRef.begin(), baseObject = refer); 
     57 
     58            // Gestion des attributs ici. 
     59         } 
    4460 
    4561         static T& CreateObject(const string _id) throw (XMLIOUndefinedValueException) 
     
    8399      protected : 
    84100 
    85          ObjectTemplate(void) : AbstractObject() 
     101         ObjectTemplate(void) : AbstractObject(), baseObject(NULL) 
    86102         {/* Ne rien faire de plus */} 
    87          ObjectTemplate(const string& _id) : AbstractObject(_id) 
     103         ObjectTemplate(const string& _id) : AbstractObject(_id), baseObject(NULL) 
    88104         {/* Ne rien faire de plus */} 
    89105 
     
    100116            { 
    101117               if (V::HasObject(did)) 
    102                   WARNING("Le noeud nommé "+ did +" existe déjà pour les instances de type "+V::GetName()+", le dernier défini complétera le premier dans le context actuel!"); 
     118                  WARNING("Le noeud nommé \""+ did +"\" existe déjà pour les instances de type "+V::GetName()+", le dernier défini complétera le premier dans le context actuel!"); 
    103119               instance_ptr = (V*)&V::CreateObject(did); 
    104120               instance_ptr->parse(_node, parseAttr); 
     
    108124 
    109125      private : 
     126         T* baseObject; 
    110127 
    111128         static string CurrContext; 
Note: See TracChangeset for help on using the changeset viewer.