Ignore:
Timestamp:
10/01/10 11:32:41 (14 years ago)
Author:
hozdoba
Message:

Commit pour sauvegarde - diverses corrections de bogues et améliorations du code.

File:
1 edited

Legend:

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

    r123 r124  
    1111         { return (currentContext); } 
    1212 
    13          const std::vector<CFile*> getEnabledFiles(void) const 
     13         const std::vector<CFile*>& getEnabledFiles(void) const 
    1414         { return (enabledFiles); } 
    1515 
     
    2222         void printEnabledFilesId(std::ostream& out = std::clog) const 
    2323         { 
    24             out << "Liste des fichiers à sortir dans le contexte analysé nommé \"" << currentContext->getId() << "\"" << std::endl; 
    25             std::vector<std::string> __vect; getEnabledFilesId(__vect); 
     24            out << "Liste des fichiers à sortir dans le contexte analysé nommé \"" 
     25                << currentContext->getId() << "\"" << std::endl; 
     26 
     27            std::vector<std::string> __vect; 
     28            this->getEnabledFilesId(__vect); 
     29 
    2630            for (unsigned int i = 0; i < __vect.size(); i++) 
    2731               out << __vect[i] << "|"; 
    2832            out << "fin" << std::endl; 
    2933         } 
     34 
     35         template <class T> 
     36            bool writeData(const std::string& id, const T& arr) 
     37         { 
     38            const CField* const field_entry = CField::GetObject(id); 
     39            const vector<CField*>& vectRef = field_entry->getVectRefObject(); 
     40 
     41            std::vector<CField*>::const_iterator it; 
     42            for (it = vectRef.begin(); it != vectRef.end(); it++ ) 
     43            { 
     44               if ((*it)->isStorable(currentContext->getCalendar()->getCurrentDate())) 
     45               { // Stockage des données dans l'instance CField si nécessaire. 
     46                  Array<double, 1> data_uni; 
     47                  (*it)->getGrid()->storeField(arr, data_uni); 
     48                  (*it)->storeData(data_uni, currentContext->getCalendar()->getCurrentDate()); 
     49               } 
     50            } 
     51 
     52            return (false); 
     53         } 
     54         virtual void createDataOutput(void) = 0; 
    3055 
    3156         virtual ~AbstractDataTreatment() 
     
    3459      protected : 
    3560 
    36          AbstractDataTreatment(Context* const _ctxt) : currentContext(_ctxt), enabledFiles() 
     61         AbstractDataTreatment(Context* const _ctxt, const AbstractCalendar& cal) : enabledFiles(), currentContext(_ctxt) 
    3762         { 
    3863            //std::cout << "(Message temporaire) Résolution des héritages ..." << std::endl; 
     
    4671            // Recherche des champs à sortir (enable à true + niveau de sortie correct) pour chaque fichier précédemment listé. 
    4772            //std::cout << "(Message temporaire) Recherche des champs à sortir ..." << std::endl; 
    48             findAllEnabledFields(); 
     73            findAllEnabledFields(cal.getInitDate()); 
    4974 
    5075            // Résolution des références de grilles pour chacun des champs. 
     
    5580         } 
    5681 
     82         std::vector<CFile*> enabledFiles; // Liste des fichiers à créer dans un context donné. 
     83 
    5784      private : 
    5885 
    59          void findAllEnabledFields(void)// <- ajouter attribut par défault ici. 
     86         void findAllEnabledFields(const Date& iniDate)// <- ajouter attribut par défault ici. 
    6087         { 
    6188            for (unsigned int i = 0; i < enabledFiles.size(); i++) 
    62                enabledFiles[i]->findEnabledFields(); 
     89               enabledFiles[i]->findEnabledFields(iniDate); 
    6390         } 
    6491 
     
    82109         { 
    83110            const std::vector<CFile*>& allFiles = CFile::GetCurrentListObject().getVector(); 
     111 
    84112            for (unsigned int i = 0; i < allFiles.size(); i++) 
    85113               if (allFiles[i]->enabled.hasValue()) // Si l'attribut 'enabled' est défini. 
    86114                  if ((bool)allFiles[i]->enabled) // Si l'attribut 'enabled' est fixé à vrai. 
    87115                     enabledFiles.push_back ( allFiles[i] ); 
     116 
    88117            if (enabledFiles.size() == 0) 
    89118               WARNING("Aucun fichier ne va être sorti dans le contexte nommé \"" + currentContext->getId() + "\" !"); 
     
    91120 
    92121         Context* const currentContext; 
    93          std::vector<CFile*> enabledFiles; // Liste des fichiers à créer dans un context donné. 
    94122 
    95123   }; //class AbstractDataTreatment 
Note: See TracChangeset for help on using the changeset viewer.