7
7
//!to make ecCodes usage safer and easier,
8
8
//!but they are unsafe as they operate on raw `codes_handle`.
9
9
10
+ #[ cfg( feature = "ec_index" ) ]
11
+ pub ( crate ) mod codes_index;
12
+
10
13
use std:: {
11
14
ffi:: { CStr , CString } ,
12
15
ptr:: { self , addr_of_mut} ,
@@ -18,8 +21,6 @@ type _SYS_IO_FILE = eccodes_sys::__sFILE;
18
21
#[ cfg( not( target_os = "macos" ) ) ]
19
22
type _SYS_IO_FILE = eccodes_sys:: _IO_FILE ;
20
23
21
- #[ cfg( feature = "ec_index" ) ]
22
- use eccodes_sys:: codes_index;
23
24
use eccodes_sys:: {
24
25
codes_context, codes_handle, codes_keys_iterator, codes_nearest, CODES_NEAREST_SAME_DATA ,
25
26
CODES_NEAREST_SAME_GRID , CODES_TYPE_BYTES , CODES_TYPE_DOUBLE , CODES_TYPE_LABEL ,
@@ -331,91 +332,6 @@ pub unsafe fn codes_handle_new_from_message_copy(message_buffer: &[u8]) -> *mut
331
332
)
332
333
}
333
334
334
- #[ cfg( feature = "ec_index" ) ]
335
- pub unsafe fn codes_index_read ( filename : & str ) -> Result < * mut codes_index , CodesError > {
336
- let filename = CString :: new ( filename) . unwrap ( ) ;
337
- let context: * mut codes_context = ptr:: null_mut ( ) ; //default context
338
- let mut error_code: i32 = 0 ;
339
-
340
- let codes_index = eccodes_sys:: codes_index_read ( context, filename. as_ptr ( ) , & mut error_code) ;
341
- codes_index. drop_in_place ( ) ;
342
- if error_code != 0 {
343
- let err: CodesInternal = FromPrimitive :: from_i32 ( error_code) . unwrap ( ) ;
344
- return Err ( err. into ( ) ) ;
345
- }
346
- Ok ( codes_index)
347
- }
348
-
349
- #[ cfg( feature = "ec_index" ) ]
350
- pub unsafe fn codes_index_delete ( index : * mut codes_index ) -> Result < ( ) , CodesError > {
351
- eccodes_sys:: codes_index_delete ( index) ;
352
- Ok ( ( ) )
353
- }
354
-
355
- #[ cfg( feature = "ec_index" ) ]
356
- pub unsafe fn codes_index_select_long (
357
- index : * mut codes_index ,
358
- key : & str ,
359
- value : i64 ,
360
- ) -> Result < ( ) , CodesError > {
361
- let key = CString :: new ( key) . unwrap ( ) ;
362
- let error_code = eccodes_sys:: codes_index_select_long ( index, key. as_ptr ( ) , value) ;
363
-
364
- if error_code != 0 {
365
- let err: CodesInternal = FromPrimitive :: from_i32 ( error_code) . unwrap ( ) ;
366
- return Err ( err. into ( ) ) ;
367
- }
368
- Ok ( ( ) )
369
- }
370
-
371
- #[ cfg( feature = "ec_index" ) ]
372
- pub unsafe fn codes_index_select_double (
373
- index : * mut codes_index ,
374
- key : & str ,
375
- value : f64 ,
376
- ) -> Result < ( ) , CodesError > {
377
- let key = CString :: new ( key) . unwrap ( ) ;
378
- let error_code = eccodes_sys:: codes_index_select_double ( index, key. as_ptr ( ) , value) ;
379
-
380
- if error_code != 0 {
381
- let err: CodesInternal = FromPrimitive :: from_i32 ( error_code) . unwrap ( ) ;
382
- return Err ( err. into ( ) ) ;
383
- }
384
- Ok ( ( ) )
385
- }
386
-
387
- #[ cfg( feature = "ec_index" ) ]
388
- pub unsafe fn codes_index_select_string (
389
- index : * mut codes_index ,
390
- key : & str ,
391
- value : & str ,
392
- ) -> Result < ( ) , CodesError > {
393
- let key = CString :: new ( key) . unwrap ( ) ;
394
- let value = CString :: new ( value) . unwrap ( ) ;
395
- let error_code = eccodes_sys:: codes_index_select_string ( index, key. as_ptr ( ) , value. as_ptr ( ) ) ;
396
-
397
- if error_code != 0 {
398
- let err: CodesInternal = FromPrimitive :: from_i32 ( error_code) . unwrap ( ) ;
399
- return Err ( err. into ( ) ) ;
400
- }
401
- Ok ( ( ) )
402
- }
403
-
404
- #[ cfg( feature = "ec_index" ) ]
405
- pub unsafe fn codes_handle_new_from_index (
406
- index : * mut codes_index ,
407
- ) -> Result < * mut codes_handle , CodesError > {
408
- let mut error_code: i32 = 0 ;
409
-
410
- let codes_handle = eccodes_sys:: codes_handle_new_from_index ( index, & mut error_code) ;
411
-
412
- if error_code != 0 {
413
- let err: CodesInternal = FromPrimitive :: from_i32 ( error_code) . unwrap ( ) ;
414
- return Err ( err. into ( ) ) ;
415
- }
416
- Ok ( codes_handle)
417
- }
418
-
419
335
pub unsafe fn codes_keys_iterator_new (
420
336
handle : * mut codes_handle ,
421
337
flags : u32 ,
0 commit comments