Changeset 2384


Ignore:
Timestamp:
07/13/22 15:58:30 (2 years ago)
Author:
jderouillat
Message:

Replace OutputDomainName? by a CDomain pointer in the hash table which manage element names. Replace unordered_multimap by multimap

Location:
XIOS3/trunk/src/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/io/nc4_data_output.cpp

    r2381 r2384  
    124124          
    125125           StdString defaultNameKey = domain->getDomainOutputName(); 
    126            if ( !relElements_.count ( defaultNameKey ) ) 
     126           if ( !relDomains_.count ( defaultNameKey ) ) 
    127127           { 
    128128             // if defaultNameKey not in the map, write the element such as it is defined 
    129              relElements_.insert( make_pair( defaultNameKey, make_pair(globalHash, defaultNameKey) ) ); 
     129             relDomains_.insert( make_pair( defaultNameKey, make_pair(globalHash, domain) ) ); 
    130130           } 
    131131           else // look if a hash associated this key is equal 
    132132           { 
    133133             bool elementIsInMap(false); 
    134              auto defaultNameKeyElements = relElements_.equal_range( defaultNameKey ); 
     134             auto defaultNameKeyElements = relDomains_.equal_range( defaultNameKey ); 
    135135             for (auto it = defaultNameKeyElements.first; it != defaultNameKeyElements.second; it++) 
    136136             { 
     
    138138               { 
    139139                 // if yes, associate the same ids to current element 
    140                  domain->name = it->second.second; 
    141                  // lon/lat names must be updated too, check that its exist, if not "lon"/"lat" (default values) are used 
    142                  StdString lon_name = "lon_"+it->second.second; 
    143                  int ncid = SuperClassWriter::getCurrentGroup(); 
    144                  int varId = 0; 
    145                  nc_inq_varid(ncid, lon_name.c_str(), &varId); 
    146                  if (!varId) //lon_name = "lon" 
    147                  { 
    148                    domain->lon_name = "lon"; 
    149                    domain->lat_name = "lat"; 
    150                  } 
    151                  else 
    152                  { 
    153                    domain->lon_name = "lon_"+it->second.second; 
    154                    domain->lat_name = "lat_"+it->second.second; 
    155                  } 
     140                 domain->name = it->second.second->getDomainOutputName(); 
     141                 domain->lon_name = it->second.second->lon_name; 
     142                 domain->lat_name = it->second.second->lat_name; 
    156143                 elementIsInMap = true; 
    157144               } 
     
    163150               domain->lon_name = "lon_"+domain->getId(); 
    164151               domain->lat_name = "lat_"+domain->getId(); 
    165                relElements_.insert( make_pair( defaultNameKey, make_pair(globalHash, domain->getDomainOutputName()) ) ) ;// = domain->getId()           
     152               relDomains_.insert( make_pair( defaultNameKey, make_pair(globalHash, domain) ) ) ;          
    166153             } 
    167154           } 
  • XIOS3/trunk/src/io/nc4_data_output.hpp

    r2381 r2384  
    129129            bool hasTimeCentered ; 
    130130         
    131             std::unordered_multimap< StdString, pair<int,StdString> > relElements_; 
     131            std::multimap< StdString, pair<int,StdString> > relElements_; 
     132            std::multimap< StdString, pair<int,CDomain*> > relDomains_; 
    132133 
    133134      }; // class CNc4DataOutput 
Note: See TracChangeset for help on using the changeset viewer.