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/genericio.py

    rc13d973 r9796d0a  
    5353libpygio.get_variable_type.argtypes=[ct.c_char_p,ct.c_char_p] 
    5454 
     55libpygio.get_variable_field_count.restype=ct.c_int 
     56libpygio.get_variable_field_count.argtypes=[ct.c_char_p,ct.c_char_p] 
     57 
    5558libpygio.read_gio_int32.restype=None 
    56 libpygio.read_gio_int32.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_int)] 
     59libpygio.read_gio_int32.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_int),ct.c_int] 
    5760 
    5861libpygio.read_gio_int64.restype=None 
    59 libpygio.read_gio_int64.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_int64)] 
     62libpygio.read_gio_int64.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_int64),ct.c_int] 
    6063 
    6164libpygio.read_gio_float.restype=None 
    62 libpygio.read_gio_float.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_float)] 
     65libpygio.read_gio_float.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_float),ct.c_int] 
    6366 
    6467libpygio.read_gio_double.restype=None 
    65 libpygio.read_gio_double.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_double)] 
     68libpygio.read_gio_double.argtypes=[ct.c_char_p,ct.c_char_p,ct.POINTER(ct.c_double),ct.c_int] 
    6669 
    6770libpygio.inspect_gio.restype=None 
     
    7174    var_size = libpygio.get_elem_num(file_name) 
    7275    var_type = libpygio.get_variable_type(file_name,var_name) 
     76    field_count = libpygio.get_variable_field_count(file_name,var_name) 
    7377    if(var_type==10): 
    7478        print "Variable not found" 
     
    7882    elif(var_type==0): 
    7983        #float 
    80         result = np.ndarray(var_size,dtype=np.float32) 
    81         libpygio.read_gio_float(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_float))) 
     84        result = np.ndarray((var_size,field_count),dtype=np.float32) 
     85        libpygio.read_gio_float(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_float)),field_count) 
    8286        return result 
    8387    elif(var_type==1): 
    8488        #double 
    85         result = np.ndarray(var_size,dtype=np.float64) 
    86         libpygio.read_gio_double(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_double))) 
     89        result = np.ndarray((var_size,field_count),dtype=np.float64) 
     90        libpygio.read_gio_double(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_double)),field_count) 
    8791        return result 
    8892    elif(var_type==2): 
    8993        #int32 
    90         result = np.ndarray(var_size,dtype=np.int32) 
    91         libpygio.read_gio_int32(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int32))) 
     94        result = np.ndarray((var_size,field_count),dtype=np.int32) 
     95        libpygio.read_gio_int32(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int32)),field_count) 
    9296        return result 
    9397    elif(var_type==3): 
    9498        #int64 
    95         result = np.ndarray(var_size,dtype=np.int64) 
    96         libpygio.read_gio_int64(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int64))) 
     99        result = np.ndarray((var_size,field_count),dtype=np.int64) 
     100        libpygio.read_gio_int64(file_name,var_name,result.ctypes.data_as(ct.POINTER(ct.c_int64)),field_count) 
    97101        return result         
    98          
     102 
     103def gio_has_variable(file_name,var_name): 
     104    var_size = libpygio.get_elem_num(file_name) 
     105    var_type = libpygio.get_variable_type(file_name,var_name) 
     106    return var_type!=10 
     107 
    99108def gio_inspect(file_name): 
    100109    libpygio.inspect_gio(file_name) 
Note: See TracChangeset for help on using the changeset viewer.