Changeset 9796d0a for python/lib/gio.h


Ignore:
Timestamp:
09/25/17 19:20:08 (7 years ago)
Author:
Hal Finkel <hfinkel@…>
Branches:
master, pympi
Children:
56b997e
Parents:
b02d091
git-author:
Hal Finkel <hfinkel@…> (09/25/17 19:20:08)
git-committer:
Hal Finkel <hfinkel@…> (09/25/17 19:20:08)
Message:

Add support for float4 (and similar) to Python bindings

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/lib/gio.h

    rbd84570 r9796d0a  
    4646 
    4747template <class T> 
    48 void read_gio(char* file_name, std::string var_name, T*& data){ 
     48void read_gio(char* file_name, std::string var_name, T*& data, int field_count){ 
    4949  gio::GenericIO reader(file_name); 
    5050  reader.openAndReadHeader(gio::GenericIO::MismatchAllowed); 
     
    5757      max_size = rank_size[i]; 
    5858  } 
    59   T* rank_data = new T[max_size+reader.requestedExtraSpace()/sizeof(T)]; 
     59  T* rank_data = new T[max_size*field_count+reader.requestedExtraSpace()/sizeof(T)]; 
    6060  int64_t offset =0; 
    61   reader.addVariable(var_name,rank_data,true); 
     61  reader.addScalarizedVariable(var_name,rank_data,field_count, 
     62                               gio::GenericIO::VarHasExtraSpace); 
    6263  for(int i=0;i<num_ranks;++i){ 
    6364    reader.readData(i,false); 
    64     std::copy(rank_data,rank_data+rank_size[i],data+offset); 
    65     offset +=rank_size[i]; 
     65    std::copy(rank_data,rank_data+rank_size[i]*field_count,data+offset); 
     66    offset +=rank_size[i]*field_count; 
    6667  } 
    6768  delete [] rank_data; 
     
    7071extern "C" int64_t get_elem_num(char* file_name); 
    7172 
    72 extern "C" void read_gio_float (char* file_name, char* var_name, float* data); 
    73 extern "C" void read_gio_double(char* file_name, char* var_name, double* data); 
    74 extern "C" void read_gio_int32 (char* file_name, char* var_name, int* data);  
    75 extern "C" void read_gio_int64 (char* file_name, char* var_name, int64_t* data); 
     73extern "C" void read_gio_float (char* file_name, char* var_name, float* data, int field_count); 
     74extern "C" void read_gio_double(char* file_name, char* var_name, double* data, int field_count); 
     75extern "C" void read_gio_int32 (char* file_name, char* var_name, int* data, int field_count);  
     76extern "C" void read_gio_int64 (char* file_name, char* var_name, int64_t* data, int field_count); 
    7677enum var_type{ 
    7778  float_type=0, 
     
    8384}; 
    8485extern "C" var_type get_variable_type(char* file_name,char* var_name); 
     86extern "C" int get_variable_field_count(char* file_name,char* var_name); 
    8587extern "C" void inspect_gio(char* file_name); 
Note: See TracChangeset for help on using the changeset viewer.