Changeset 9796d0a for python/lib/gio.cxx


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.cxx

    rbd84570 r9796d0a  
    4343#include <iostream> 
    4444 
    45   void read_gio_float(char* file_name, char* var_name, float* data){ 
    46     read_gio<float>(file_name,var_name,data); 
     45  void read_gio_float(char* file_name, char* var_name, float* data, int field_count){ 
     46    read_gio<float>(file_name,var_name,data,field_count); 
    4747  } 
    48   void read_gio_double(char* file_name, char* var_name, double* data){ 
    49     read_gio<double>(file_name,var_name,data); 
     48  void read_gio_double(char* file_name, char* var_name, double* data, int field_count){ 
     49    read_gio<double>(file_name,var_name,data,field_count); 
    5050  } 
    51   void read_gio_int32(char* file_name, char* var_name, int* data){ 
    52     read_gio<int>(file_name,var_name,data); 
     51  void read_gio_int32(char* file_name, char* var_name, int* data, int field_count){ 
     52    read_gio<int>(file_name,var_name,data,field_count); 
    5353  } 
    54   void read_gio_int64(char* file_name, char* var_name, int64_t* data){ 
    55     read_gio<int64_t>(file_name,var_name,data); 
     54  void read_gio_int64(char* file_name, char* var_name, int64_t* data, int field_count){ 
     55    read_gio<int64_t>(file_name,var_name,data,field_count); 
    5656  } 
    5757   
     
    7777      gio::GenericIO::VariableInfo vinfo = VI[i]; 
    7878      if(vinfo.Name == var_name){ 
    79         if(vinfo.IsFloat && vinfo.Size == 4) 
     79        if(vinfo.IsFloat && vinfo.ElementSize == 4) 
    8080          return float_type; 
    81         else if(vinfo.IsFloat && vinfo.Size == 8) 
     81        else if(vinfo.IsFloat && vinfo.ElementSize == 8) 
    8282          return double_type; 
    83         else if(!vinfo.IsFloat && vinfo.Size == 4) 
     83        else if(!vinfo.IsFloat && vinfo.ElementSize == 4) 
    8484          return int32_type; 
    85         else if(!vinfo.IsFloat && vinfo.Size == 8) 
     85        else if(!vinfo.IsFloat && vinfo.ElementSize == 8) 
    8686          return int64_type; 
    8787        else 
     
    9191    return var_not_found; 
    9292       
     93  } 
     94 
     95  int get_variable_field_count(char* file_name,char* var_name){ 
     96   gio::GenericIO reader(file_name); 
     97   std::vector<gio::GenericIO::VariableInfo> VI; 
     98   reader.openAndReadHeader(gio::GenericIO::MismatchAllowed); 
     99   reader.getVariableInfo(VI); 
     100 
     101   int num =VI.size(); 
     102    for(int i =0;i<num;++i){ 
     103      gio::GenericIO::VariableInfo vinfo = VI[i]; 
     104      if(vinfo.Name == var_name) { 
     105        return vinfo.Size/vinfo.ElementSize; 
     106      } 
     107    } 
     108    return 0; 
    93109  } 
    94110 
     
    110126    else 
    111127      std::cout<<"[i"; 
    112     std::cout<<" "<<vinfo.Size*8<<"] "; 
     128    int NumElements = vinfo.Size/vinfo.ElementSize; 
     129    std::cout<<" "<<vinfo.ElementSize*8; 
     130    if (NumElements > 1) 
     131      std::cout<<"x"<<NumElements; 
     132    std::cout<<"] "; 
    113133    std::cout<<vinfo.Name<<std::endl; 
    114134  } 
Note: See TracChangeset for help on using the changeset viewer.