@@ -43,11 +43,18 @@ extern crate std;
4343
4444use  libc:: { c_char,  c_void} ; 
4545use  std:: path:: Path ; 
46- use  hdf5_sys as  ffi; 
46+ // use hdf5_sys as ffi; 
47+ use  hdf5_sys:: h5d; 
48+ use  hdf5_sys:: h5t; 
49+ use  hdf5_sys:: h5p; 
50+ use  hdf5_sys:: h5f; 
51+ use  hdf5_sys:: h5e; 
52+ use  hdf5_sys:: h5s; 
53+ use  hdf5_sys:: h5i; 
4754
4855use  tensor:: Tensor ; 
4956
50- extern  fn  error_handler ( _:  ffi :: hid_t ,  _:  * const  c_void )  { 
57+ extern  fn  error_handler ( _:  h5i :: hid_t ,  _:  * const  c_void )  { 
5158    // Suppress errors. We will rely on return statuses alone. 
5259} 
5360
@@ -71,30 +78,30 @@ macro_rules! add_save {
7178                let  group = "data" ; 
7279
7380                unsafe  { 
74-                     let  filename_cstr = try! ( :: std:: ffi:: CString :: new( filename) ) ; 
75-                     let  group_cstr = try! ( :: std:: ffi:: CString :: new( group) ) ; 
81+                     let  filename_cstr = :: std:: ffi:: CString :: new( filename) ? ; 
82+                     let  group_cstr = :: std:: ffi:: CString :: new( group) ? ; 
7683
77-                     //ffi ::H5Eset_auto2(0, error_handler, 0 as *const c_void); 
84+                     //h5e ::H5Eset_auto2(0, error_handler, 0 as *const c_void); 
7885
79-                     let  file = ffi :: H5Fcreate ( filename_cstr. as_ptr( )  as  * const  c_char, 
80-                                    ffi :: H5F_ACC_TRUNC ,  ffi :: H5P_DEFAULT ,  ffi :: H5P_DEFAULT ) ; 
86+                     let  file = h5f :: H5Fcreate ( filename_cstr. as_ptr( )  as  * const  c_char, 
87+                                    h5f :: H5F_ACC_TRUNC ,  h5p :: H5P_DEFAULT ,  h5p :: H5P_DEFAULT ) ; 
8188
8289                    let  mut  shape:  Vec <u64 > = Vec :: new( ) ; 
8390                    for  s in self . shape( ) . iter( )  { 
8491                        shape. push( * s as  u64 ) ; 
8592                    } 
8693
87-                     let  space = ffi :: H5Screate_simple ( shape. len( )  as  i32 ,  shape. as_ptr( ) , 
94+                     let  space = h5s :: H5Screate_simple ( shape. len( )  as  i32 ,  shape. as_ptr( ) , 
8895                                                      std:: ptr:: null( ) ) ; 
8996
90-                     let  dset = ffi :: H5Dcreate2 ( file,  group_cstr. as_ptr( )  as  * const  c_char, 
97+                     let  dset = h5d :: H5Dcreate2 ( file,  group_cstr. as_ptr( )  as  * const  c_char, 
9198                                               $h5type,  space, 
92-                                                ffi :: H5P_DEFAULT , 
93-                                                ffi :: H5P_DEFAULT , 
94-                                                ffi :: H5P_DEFAULT ) ; 
99+                                                h5p :: H5P_DEFAULT , 
100+                                                h5p :: H5P_DEFAULT , 
101+                                                h5p :: H5P_DEFAULT ) ; 
95102
96-                     let  status = ffi :: H5Dwrite ( dset,  $h5type,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
97-                                                ffi :: H5P_DEFAULT ,  self . as_ptr( )  as  *  const  c_void) ; 
103+                     let  status = h5d :: H5Dwrite ( dset,  $h5type,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
104+                                                h5p :: H5P_DEFAULT ,  self . as_ptr( )  as  *  const  c_void) ; 
98105
99106                    if  status < 0  { 
100107                        let  msg = format!( "Failed to write '{}': {:?}" ,  group,  path) ; 
@@ -103,25 +110,25 @@ macro_rules! add_save {
103110                    } 
104111
105112
106-                     ffi :: H5Dclose ( dset) ; 
107-                     ffi :: H5Fclose ( file) ; 
113+                     h5d :: H5Dclose ( dset) ; 
114+                     h5f :: H5Fclose ( file) ; 
108115                } 
109116                Ok ( ( ) ) 
110117            } 
111118        } 
112119    ) 
113120} 
114121
115- add_save ! ( u8 ,  ffi :: H5T_NATIVE_UINT8 ) ; 
116- add_save ! ( u16 ,  ffi :: H5T_NATIVE_UINT16 ) ; 
117- add_save ! ( u32 ,  ffi :: H5T_NATIVE_UINT32 ) ; 
118- add_save ! ( u64 ,  ffi :: H5T_NATIVE_UINT64 ) ; 
119- add_save ! ( i8 ,  ffi :: H5T_NATIVE_INT8 ) ; 
120- add_save ! ( i16 ,  ffi :: H5T_NATIVE_INT16 ) ; 
121- add_save ! ( i32 ,  ffi :: H5T_NATIVE_INT32 ) ; 
122- add_save ! ( i64 ,  ffi :: H5T_NATIVE_INT64 ) ; 
123- add_save ! ( f32 ,  ffi :: H5T_NATIVE_FLOAT ) ; 
124- add_save ! ( f64 ,  ffi :: H5T_NATIVE_DOUBLE ) ; 
122+ add_save ! ( u8 ,  h5t :: H5T_NATIVE_UINT8 ) ; 
123+ add_save ! ( u16 ,  h5t :: H5T_NATIVE_UINT16 ) ; 
124+ add_save ! ( u32 ,  h5t :: H5T_NATIVE_UINT32 ) ; 
125+ add_save ! ( u64 ,  h5t :: H5T_NATIVE_UINT64 ) ; 
126+ add_save ! ( i8 ,  h5t :: H5T_NATIVE_INT8 ) ; 
127+ add_save ! ( i16 ,  h5t :: H5T_NATIVE_INT16 ) ; 
128+ add_save ! ( i32 ,  h5t :: H5T_NATIVE_INT32 ) ; 
129+ add_save ! ( i64 ,  h5t :: H5T_NATIVE_INT64 ) ; 
130+ add_save ! ( f32 ,  h5t :: H5T_NATIVE_FLOAT ) ; 
131+ add_save ! ( f64 ,  h5t :: H5T_NATIVE_DOUBLE ) ; 
125132
126133
127134macro_rules!  add_load { 
@@ -137,38 +144,38 @@ macro_rules! add_load {
137144                } , 
138145            } ; 
139146            unsafe  { 
140-                 let  filename_cstr = try! ( :: std:: ffi:: CString :: new( filename) ) ; 
141-                 let  group_cstr = try! ( :: std:: ffi:: CString :: new( group) ) ; 
147+                 let  filename_cstr = :: std:: ffi:: CString :: new( filename) ? ; 
148+                 let  group_cstr = :: std:: ffi:: CString :: new( group) ? ; 
142149
143-                 ffi :: H5Eset_auto2 ( 0 ,  error_handler,  0  as  * const  c_void) ; 
150+                 h5e :: H5Eset_auto2 ( 0 ,  error_handler,  0  as  * const  c_void) ; 
144151
145-                 let  file = ffi :: H5Fopen ( filename_cstr. as_ptr( )  as  * const  c_char, 
146-                                ffi :: H5F_ACC_RDONLY ,  ffi :: H5P_DEFAULT ) ; 
152+                 let  file = h5f :: H5Fopen ( filename_cstr. as_ptr( )  as  * const  c_char, 
153+                                h5f :: H5F_ACC_RDONLY ,  h5p :: H5P_DEFAULT ) ; 
147154
148155                if  file < 0  { 
149156                    let  msg = format!( "File not found: {:?}" ,  path) ; 
150157                    let  err = std:: io:: Error :: new( std:: io:: ErrorKind :: NotFound ,  msg) ; 
151158                    return  Err ( err) ; 
152159                } 
153160
154-                 let  dset = ffi :: H5Dopen2 ( file,  group_cstr. as_ptr( )  as  * const  c_char, 
155-                                         ffi :: H5P_DEFAULT ) ; 
161+                 let  dset = h5d :: H5Dopen2 ( file,  group_cstr. as_ptr( )  as  * const  c_char, 
162+                                         h5p :: H5P_DEFAULT ) ; 
156163
157164                if  dset < 0  { 
158165                    let  msg = format!( "Group '{}' not found: {}" ,  group,  filename) ; 
159166                    let  err = std:: io:: Error :: new( std:: io:: ErrorKind :: NotFound ,  msg) ; 
160167                    return  Err ( err) ; 
161168                } 
162169
163-                 let  datatype = ffi :: H5Dget_type ( dset) ; 
170+                 let  datatype = h5d :: H5Dget_type ( dset) ; 
164171
165-                 let  space = ffi :: H5Dget_space ( dset) ; 
166-                 let  ndims = ffi :: H5Sget_simple_extent_ndims ( space) ; 
172+                 let  space = h5d :: H5Dget_space ( dset) ; 
173+                 let  ndims = h5s :: H5Sget_simple_extent_ndims ( space) ; 
167174
168-                 let  mut  shape:  Tensor <ffi :: hsize_t> = Tensor :: zeros( & [ ndims as  usize ] ) ; 
175+                 let  mut  shape:  Tensor <h5d :: hsize_t> = Tensor :: zeros( & [ ndims as  usize ] ) ; 
169176
170-                 if  ffi :: H5Sget_simple_extent_dims ( space,  shape. as_mut_ptr( ) , 
171-                                                   0  as  * mut  ffi :: hsize_t)  != ndims { 
177+                 if  h5s :: H5Sget_simple_extent_dims ( space,  shape. as_mut_ptr( ) , 
178+                                                   0  as  * mut  h5d :: hsize_t)  != ndims { 
172179                    let  msg = format!( "Could not read shape of tesor: {}" ,  filename) ; 
173180                    let  err = std:: io:: Error :: new( std:: io:: ErrorKind :: InvalidData ,  msg) ; 
174181                    return  Err ( err) ; 
@@ -179,65 +186,65 @@ macro_rules! add_load {
179186                let  unsigned_shape = & unsigned_tensor. data( ) ; 
180187
181188                let  data:  Tensor <$t> = { 
182-                     if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_UINT8 )  == 1  { 
189+                     if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_UINT8 )  == 1  { 
183190                        let  mut  native_data:  Tensor <u8 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
184191                        // Finally load the actual data 
185-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_UINT8 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
186-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
192+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_UINT8 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
193+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
187194                        native_data. convert:: <$t>( ) 
188-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_INT8 )  == 1  { 
195+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_INT8 )  == 1  { 
189196                        let  mut  native_data:  Tensor <i8 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
190197                        // Finally load the actual data 
191-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_INT8 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
192-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
198+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_INT8 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
199+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
193200                        native_data. convert:: <$t>( ) 
194-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_UINT16 )  == 1  { 
201+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_UINT16 )  == 1  { 
195202                        let  mut  native_data:  Tensor <u16 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
196203                        // Finally load the actual data 
197-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_UINT16 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
198-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
204+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_UINT16 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
205+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
199206                        native_data. convert:: <$t>( ) 
200-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_INT16 )  == 1  { 
207+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_INT16 )  == 1  { 
201208                        let  mut  native_data:  Tensor <i16 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
202209                        // Finally load the actual data 
203-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_INT16 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
204-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
210+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_INT16 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
211+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
205212                        native_data. convert:: <$t>( ) 
206-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_UINT32 )  == 1  { 
213+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_UINT32 )  == 1  { 
207214                        let  mut  native_data:  Tensor <u32 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
208215                        // Finally load the actual data 
209-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_UINT32 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
210-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
216+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_UINT32 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
217+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
211218                        native_data. convert:: <$t>( ) 
212-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_INT32 )  == 1  { 
219+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_INT32 )  == 1  { 
213220                        let  mut  native_data:  Tensor <i32 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
214221                        // Finally load the actual data 
215-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_INT32 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
216-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
222+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_INT32 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
223+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
217224                        native_data. convert:: <$t>( ) 
218-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_UINT64 )  == 1  { 
225+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_UINT64 )  == 1  { 
219226                        let  mut  native_data:  Tensor <u64 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
220227                        // Finally load the actual data 
221-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_UINT64 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
222-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
228+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_UINT64 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
229+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
223230                        native_data. convert:: <$t>( ) 
224-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_INT64 )  == 1  { 
231+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_INT64 )  == 1  { 
225232                        let  mut  native_data:  Tensor <i64 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
226233                        // Finally load the actual data 
227-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_INT64 ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
228-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
234+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_INT64 ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
235+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
229236                        native_data. convert:: <$t>( ) 
230-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_FLOAT )  == 1  { 
237+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_FLOAT )  == 1  { 
231238                        let  mut  native_data:  Tensor <f32 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
232239                        // Finally load the actual data 
233-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_FLOAT ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
234-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
240+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_FLOAT ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
241+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
235242                        native_data. convert:: <$t>( ) 
236-                     }  else if  ffi :: H5Tequal ( datatype,  ffi :: H5T_NATIVE_DOUBLE )  == 1  { 
243+                     }  else if  h5t :: H5Tequal ( datatype,  h5t :: H5T_NATIVE_DOUBLE )  == 1  { 
237244                        let  mut  native_data:  Tensor <f64 > = Tensor :: empty( & unsigned_shape[ ..] ) ; 
238245                        // Finally load the actual data 
239-                         ffi :: H5Dread ( dset,  ffi :: H5T_NATIVE_DOUBLE ,  ffi :: H5S_ALL ,  ffi :: H5S_ALL , 
240-                                      ffi :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
246+                         h5d :: H5Dread ( dset,  h5t :: H5T_NATIVE_DOUBLE ,  h5s :: H5S_ALL ,  h5s :: H5S_ALL , 
247+                                      h5p :: H5P_DEFAULT ,  native_data. as_mut_ptr( )  as  * mut  c_void) ; 
241248                        native_data. convert:: <$t>( ) 
242249                    }  else { 
243250                        let  msg = format!( "Unable to convert '{}' to {}: {}" , 
@@ -247,9 +254,9 @@ macro_rules! add_load {
247254                    } 
248255                } ; 
249256
250-                 ffi :: H5Tclose ( datatype) ; 
251-                 ffi :: H5Dclose ( dset) ; 
252-                 ffi :: H5Fclose ( file) ; 
257+                 h5t :: H5Tclose ( datatype) ; 
258+                 h5d :: H5Dclose ( dset) ; 
259+                 h5f :: H5Fclose ( file) ; 
253260
254261                Ok ( data) 
255262            } 
0 commit comments