Ignore:
Timestamp:
05/06/11 10:15:47 (13 years ago)
Author:
hozdoba
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.hpp

    r185 r189  
    4949            int addDimension(const StdString& name, const StdSize size = UNLIMITED_DIM); 
    5050            int addVariable(const StdString & name, nc_type type, 
    51                                     const std::vector<StdString> & dim); 
     51                            const std::vector<StdString> & dim); 
     52                             
     53      //---------------------------------------------------------------- 
     54         public : 
     55          
    5256            template <class T> 
    5357               void addAttribute 
     
    5559 
    5660            /// Ecriture des données /// 
    57             template <class T> 
    58                void writeData(const ARRAY(T, 1) data, const StdString & name, 
     61            template <class T, StdSize ndim> 
     62               void writeData(const ARRAY(T, ndim) data, const StdString & name, 
    5963                              bool collective, StdSize record, 
    6064                              const std::vector<StdSize> * start = NULL, 
     
    6872            /// Destructeur /// 
    6973            virtual ~CONetCDF4(void); 
    70  
     74             
     75      //---------------------------------------------------------------- 
     76       
    7177         protected : 
    7278 
     
    8389            std::vector<StdSize> getDimensions(const StdString & varname); 
    8490            int getUnlimitedDimension(void); 
    85  
     91             
     92      //---------------------------------------------------------------- 
     93       
    8694         private : 
     95          
     96            template <class T> 
     97               void writeData_(int grpid, int varid, 
     98                               const std::vector<StdSize> & sstart, 
     99                               const std::vector<StdSize> & scount, T * data); 
    87100 
    88101            void getWriteDataInfos(const StdString & name, StdSize record, StdSize & array_size, 
     
    102115      }; // class CONetCDF4 
    103116 
     117      ///--------------------------------------------------------------- 
     118            
     119      template <class T, StdSize ndim> 
     120         void CONetCDF4::writeData(const ARRAY(T, ndim) data, const StdString & name, 
     121                                   bool collective, StdSize record, 
     122                                   const std::vector<StdSize> * start, 
     123                                   const std::vector<StdSize> * count) 
     124      { 
     125         int grpid = this->getCurrentGroup(); 
     126         int varid = this->getVariable(name); 
     127         StdSize array_size = 1; 
     128         std::vector<StdSize> sstart, scount; 
     129 
     130         if (this->wmpi && collective) 
     131            CheckError(nc_var_par_access(grpid, varid, NC_COLLECTIVE)); 
     132         if (this->wmpi && !collective) 
     133            CheckError(nc_var_par_access(grpid, varid, NC_INDEPENDENT)); 
     134 
     135         this->getWriteDataInfos 
     136         (name, record, array_size,  sstart, scount, start, count); 
     137         this->writeData_(grpid, varid, sstart, scount, data->data()); 
     138      } 
     139      
     140      ///--------------------------------------------------------------- 
     141 
    104142   } // namespace io 
    105143} // namespace xmlioserver 
Note: See TracChangeset for help on using the changeset viewer.