Skip to content

Commit 5edcb4a

Browse files
committed
Reverted to Option<_> types for function pointers.
1 parent bfecf0c commit 5edcb4a

File tree

3 files changed

+32
-48
lines changed

3 files changed

+32
-48
lines changed

build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fn main() {
1313

1414
cmd.current_dir(Path::new("rocksdb"))
1515
.arg("EXTRA_CFLAGS=-fPIC")
16-
.arg("EXTRA_CXXFLAGS=-fPIC") // -std=c++11 -stdlib=libstdc++
16+
.arg("EXTRA_CXXFLAGS=-fPIC")
1717
.arg(format!("INSTALL_PATH={}", out_dir));
1818

1919
if let Ok(jobs) = num_jobs {

src/lib.rs

Lines changed: 30 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ extern "C" {
180180

181181
pub fn rocksdb_writebatch_put_log_data(batch: *mut rocksdb_writebatch_t, blob: *const c_char, len: size_t);
182182

183-
pub fn rocksdb_writebatch_iterate(batch: *mut rocksdb_writebatch_t, state: *mut c_void, put: unsafe extern "C" fn(state: *mut c_void, k: *const c_char, klen: size_t, v: *const c_char, vlen: size_t), deleted: unsafe extern "C" fn(state: *mut c_void, k: *const c_char, klen: size_t));
183+
pub fn rocksdb_writebatch_iterate(batch: *mut rocksdb_writebatch_t, state: *mut c_void, put: Option<unsafe extern "C" fn(state: *mut c_void, k: *const c_char, klen: size_t, v: *const c_char, vlen: size_t)>, deleted: Option<unsafe extern "C" fn(state: *mut c_void, k: *const c_char, klen: size_t)>);
184184

185185
pub fn rocksdb_writebatch_data(batch: *mut rocksdb_writebatch_t, size: *mut size_t) -> *const c_char;
186186

@@ -208,7 +208,7 @@ extern "C" {
208208

209209
pub fn rocksdb_block_based_options_set_format_version(options: *mut rocksdb_block_based_table_options_t, v: c_int);
210210

211-
pub fn rocksdb_block_based_options_set_index_type(options: *mut rocksdb_block_based_table_options_t, v: rocksdb_block_based_table_index_type_t);
211+
pub fn rocksdb_block_based_options_set_index_type(options: *mut rocksdb_block_based_table_options_t, v: c_int);
212212

213213
pub fn rocksdb_block_based_options_set_hash_index_allow_collision(options: *mut rocksdb_block_based_table_options_t, v: c_uchar);
214214

@@ -264,7 +264,7 @@ extern "C" {
264264

265265
pub fn rocksdb_options_set_uint64add_merge_operator(opt: *mut rocksdb_options_t);
266266

267-
pub fn rocksdb_options_set_compression_per_level(opt: *mut rocksdb_options_t, level_values: *mut rocksdb_compression_type_t, num_levels: size_t);
267+
pub fn rocksdb_options_set_compression_per_level(opt: *mut rocksdb_options_t, level_values: *mut c_int, num_levels: size_t);
268268

269269
pub fn rocksdb_options_set_create_if_missing(opt: *mut rocksdb_options_t, v: c_uchar);
270270

@@ -300,7 +300,7 @@ extern "C" {
300300

301301
pub fn rocksdb_options_set_level0_stop_writes_trigger(opt: *mut rocksdb_options_t, n: c_int);
302302

303-
pub fn rocksdb_options_set_max_mem_compaction_level(opt: *mut rocksdb_options_t, n: rocksdb_compaction_style_t);
303+
pub fn rocksdb_options_set_max_mem_compaction_level(opt: *mut rocksdb_options_t, n: c_int);
304304

305305
pub fn rocksdb_options_set_target_file_size_base(opt: *mut rocksdb_options_t, n: uint64_t);
306306

@@ -314,7 +314,7 @@ extern "C" {
314314

315315
pub fn rocksdb_options_set_max_grandparent_overlap_factor(opt: *mut rocksdb_options_t, v: c_int);
316316

317-
pub fn rocksdb_options_set_max_bytes_for_level_multiplier_additional(opt: *mut rocksdb_options_t, level_values: *mut rocksdb_compression_type_t, num_levels: size_t);
317+
pub fn rocksdb_options_set_max_bytes_for_level_multiplier_additional(opt: *mut rocksdb_options_t, level_values: *mut c_int, num_levels: size_t);
318318

319319
pub fn rocksdb_options_enable_statistics(opt: *mut rocksdb_options_t);
320320

@@ -430,53 +430,53 @@ extern "C" {
430430

431431
pub fn rocksdb_options_set_report_bg_io_stats(opt: *mut rocksdb_options_t, v: c_int);
432432

433-
pub fn rocksdb_options_set_compression(opt: *mut rocksdb_options_t, t: rocksdb_compression_type_t);
433+
pub fn rocksdb_options_set_compression(opt: *mut rocksdb_options_t, t: c_int);
434434

435-
pub fn rocksdb_options_set_compaction_style(opt: *mut rocksdb_options_t, style: rocksdb_compaction_style_t);
435+
pub fn rocksdb_options_set_compaction_style(opt: *mut rocksdb_options_t, style: c_int);
436436

437437
pub fn rocksdb_options_set_universal_compaction_options(opt: *mut rocksdb_options_t, uco: *mut rocksdb_universal_compaction_options_t);
438438

439439
pub fn rocksdb_options_set_fifo_compaction_options(opt: *mut rocksdb_options_t, fifo: *mut rocksdb_fifo_compaction_options_t);
440440

441441
// Compaction filter
442442

443-
pub fn rocksdb_compactionfilter_create(state: *mut c_void, destructor: unsafe extern "C" fn(state: *mut c_void), filter: unsafe extern "C" fn(state: *mut c_void, level: c_int, key: *const c_char, key_length: size_t, existing_value: *const c_char, value_length: size_t, new_value: *mut *mut c_char, new_value_length: *mut size_t, value_changed: *mut c_uchar) -> c_uchar, name: unsafe extern "C" fn(state: *mut c_void) -> *const c_char) -> *mut rocksdb_compactionfilter_t;
443+
pub fn rocksdb_compactionfilter_create(state: *mut c_void, destructor: Option<unsafe extern "C" fn(state: *mut c_void)>, filter: Option<unsafe extern "C" fn(state: *mut c_void, level: c_int, key: *const c_char, key_length: size_t, existing_value: *const c_char, value_length: size_t, new_value: *mut *mut c_char, new_value_length: *mut size_t, value_changed: *mut c_uchar) -> c_uchar>, name: Option<unsafe extern "C" fn(state: *mut c_void) -> *const c_char>) -> *mut rocksdb_compactionfilter_t;
444444

445445
pub fn rocksdb_compactionfilter_set_ignore_snapshots(filter: *mut rocksdb_compactionfilter_t, v: c_uchar);
446446

447447
pub fn rocksdb_compactionfilter_destroy(filter: *mut rocksdb_compactionfilter_t);
448448

449-
// Compaction filter context
449+
// Compaction Filter context
450450

451451
pub fn rocksdb_compactionfiltercontext_is_full_compaction(context: *mut rocksdb_compactionfiltercontext_t) -> c_uchar;
452452

453453
pub fn rocksdb_compactionfiltercontext_is_manual_compaction(context: *mut rocksdb_compactionfiltercontext_t) -> c_uchar;
454454

455-
// Compaction filter factory
455+
// Compaction Filter factory
456456

457-
pub fn rocksdb_compactionfilterfactory_create(state: *mut c_void, destructor: unsafe extern "C" fn(state: *mut c_void), create_compaction_filter: unsafe extern "C" fn(state: *mut c_void, context: *mut rocksdb_compactionfiltercontext_t) -> *mut rocksdb_compactionfilter_t, name: unsafe extern "C" fn(state: *mut c_void) -> *const c_char) -> *mut rocksdb_compactionfilterfactory_t;
457+
pub fn rocksdb_compactionfilterfactory_create(state: *mut c_void, destructor: Option<unsafe extern "C" fn(state: *mut c_void)>, create_compaction_filter: Option<unsafe extern "C" fn(state: *mut c_void, context: *mut rocksdb_compactionfiltercontext_t) -> *mut rocksdb_compactionfilter_t>, name: Option<unsafe extern "C" fn(state: *mut c_void) -> *const c_char>) -> *mut rocksdb_compactionfilterfactory_t;
458458

459459
pub fn rocksdb_compactionfilterfactory_destroy(factory: *mut rocksdb_compactionfilterfactory_t);
460460

461461
// Comparator
462462

463-
pub fn rocksdb_comparator_create(state: *mut c_void, destructor: unsafe extern "C" fn(state: *mut c_void), compare: unsafe extern "C" fn(state: *mut c_void, a: *const c_char, alen: size_t, b: *const c_char, blen: size_t) -> c_int, name: unsafe extern "C" fn(state: *mut c_void) -> *const c_char) -> *mut rocksdb_comparator_t;
463+
pub fn rocksdb_comparator_create(state: *mut c_void, destructor: Option<unsafe extern "C" fn(state: *mut c_void)>, compare: Option<unsafe extern "C" fn(state: *mut c_void, a: *const c_char, alen: size_t, b: *const c_char, blen: size_t) -> c_int>, name: Option<unsafe extern "C" fn(state: *mut c_void) -> *const c_char>) -> *mut rocksdb_comparator_t;
464464

465465
pub fn rocksdb_comparator_destroy(cmp: *mut rocksdb_comparator_t);
466466

467467
// Filter policy
468468

469-
pub fn rocksdb_filterpolicy_create(state: *mut c_void, destructor: unsafe extern "C" fn(state: *mut c_void), create_filter: unsafe extern "C" fn(state: *mut c_void, key_array: *const *const c_char, key_length_array: *const size_t, num_keys: c_int, filter_length: *mut size_t) -> *mut c_char, key_may_match: unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t, filter: *const c_char, filter_length: size_t) -> c_uchar, delete_filter: unsafe extern "C" fn(state: *mut c_void, filter: *const c_char, filter_length: size_t), name: unsafe extern "C" fn(state: *mut c_void) -> *const c_char) -> *mut rocksdb_filterpolicy_t;
469+
pub fn rocksdb_filterpolicy_create(state: *mut c_void, destructor: Option<unsafe extern "C" fn(state: *mut c_void)>, create_filter: Option<unsafe extern "C" fn(state: *mut c_void, key_array: *const *const c_char, key_length_array: *const size_t, num_keys: c_int, filter_length: *mut size_t) -> *mut c_char>, key_may_match: Option<unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t, filter: *const c_char, filter_length: size_t) -> c_uchar>, delete_filter: Option<unsafe extern "C" fn(state: *mut c_void, filter: *const c_char, filter_length: size_t)>, name: Option<unsafe extern "C" fn(state: *mut c_void) -> *const c_char>) -> *mut rocksdb_filterpolicy_t;
470470

471471
pub fn rocksdb_filterpolicy_destroy(filter: *mut rocksdb_filterpolicy_t);
472472

473473
pub fn rocksdb_filterpolicy_create_bloom(bits_per_key: c_int) -> *mut rocksdb_filterpolicy_t;
474474

475475
pub fn rocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int) -> *mut rocksdb_filterpolicy_t;
476476

477-
// Merge operator
477+
// Merge Operator
478478

479-
pub fn rocksdb_mergeoperator_create(state: *mut c_void, destructor: unsafe extern "C" fn(state: *mut c_void), full_merge: unsafe extern "C" fn(state: *mut c_void, key: *const c_char, key_length: size_t, existing_value: *const c_char, existing_value_length: size_t, operands_list: *const *const c_char, operands_list_length: *const size_t, num_operands: c_int, success: *mut c_uchar, new_value_length: *mut size_t) -> *mut c_char, partial_merge: unsafe extern "C" fn(state: *mut c_void, key: *const c_char, key_length: size_t, operands_list: *const *const c_char, operands_list_length: *const size_t, num_operands: c_int, success: *mut c_uchar, new_value_length: *mut size_t) -> *mut c_char, delete_value: unsafe extern "C" fn(state: *mut c_void, value: *const c_char, value_length: size_t), name: unsafe extern "C" fn(state: *mut c_void) -> *const c_char) -> *mut rocksdb_mergeoperator_t;
479+
pub fn rocksdb_mergeoperator_create(state: *mut c_void, destructor: Option<unsafe extern "C" fn(state: *mut c_void)>, full_merge: Option<unsafe extern "C" fn(state: *mut c_void, key: *const c_char, key_length: size_t, existing_value: *const c_char, existing_value_length: size_t, operands_list: *const *const c_char, operands_list_length: *const size_t, num_operands: c_int, success: *mut c_uchar, new_value_length: *mut size_t) -> *mut c_char>, partial_merge: Option<unsafe extern "C" fn(state: *mut c_void, key: *const c_char, key_length: size_t, operands_list: *const *const c_char, operands_list_length: *const size_t, num_operands: c_int, success: *mut c_uchar, new_value_length: *mut size_t) -> *mut c_char>, delete_value: Option<unsafe extern "C" fn(state: *mut c_void, value: *const c_char, value_length: size_t)>, name: Option<unsafe extern "C" fn(state: *mut c_void) -> *const c_char>) -> *mut rocksdb_mergeoperator_t;
480480

481481
pub fn rocksdb_mergeoperator_destroy(merge_operator: *mut rocksdb_mergeoperator_t);
482482

@@ -542,7 +542,7 @@ extern "C" {
542542

543543
// Slice Transform
544544

545-
pub fn rocksdb_slicetransform_create(state: *mut c_void, destructor: unsafe extern "C" fn(state: *mut c_void), transform: unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t, dst_length: *mut size_t) -> *mut c_char, in_domain: unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t) -> c_uchar, in_range: unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t) -> c_uchar, name: unsafe extern "C" fn(state: *mut c_void) -> *const c_char) -> *mut rocksdb_slicetransform_t;
545+
pub fn rocksdb_slicetransform_create(state: *mut c_void, destructor: Option<unsafe extern "C" fn(state: *mut c_void)>, transform: Option<unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t, dst_length: *mut size_t) -> *mut c_char>, in_domain: Option<unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t) -> c_uchar>, in_range: Option<unsafe extern "C" fn(state: *mut c_void, key: *const c_char, length: size_t) -> c_uchar>, name: Option<unsafe extern "C" fn(state: *mut c_void) -> *const c_char>) -> *mut rocksdb_slicetransform_t;
546546

547547
pub fn rocksdb_slicetransform_create_fixed_prefix(len: size_t) -> *mut rocksdb_slicetransform_t;
548548

@@ -564,7 +564,7 @@ extern "C" {
564564

565565
pub fn rocksdb_universal_compaction_options_set_compression_size_percent(uco: *mut rocksdb_universal_compaction_options_t, p: c_int);
566566

567-
pub fn rocksdb_universal_compaction_options_set_stop_style(uco: *mut rocksdb_universal_compaction_options_t, style: rocksdb_compaction_stop_style_t);
567+
pub fn rocksdb_universal_compaction_options_set_stop_style(uco: *mut rocksdb_universal_compaction_options_t, style: c_int);
568568

569569
pub fn rocksdb_universal_compaction_options_destroy(uco: *mut rocksdb_universal_compaction_options_t);
570570

@@ -599,38 +599,22 @@ extern "C" {
599599
pub fn rocksdb_free(ptr: *mut c_void);
600600
}
601601

602-
#[derive(Copy, Clone, Debug)]
603-
#[repr(C)]
604-
pub enum rocksdb_block_based_table_index_type_t {
605-
BinarySearch = 0,
606-
HashSearch = 1,
607-
}
602+
pub const rocksdb_block_based_table_index_type_binary_search: c_int = 0;
603+
pub const rocksdb_block_based_table_index_type_hash_search: c_int = 1;
608604

609-
#[derive(Copy, Clone, Debug)]
610-
#[repr(C)]
611-
pub enum rocksdb_compression_type_t {
612-
None = 0,
613-
Snappy = 1,
614-
Zlib = 2,
615-
Bz2 = 3,
616-
Lz4 = 4,
617-
Lz4hc = 5,
618-
}
605+
pub const rocksdb_no_compression: c_int = 0;
606+
pub const rocksdb_snappy_compression: c_int = 1;
607+
pub const rocksdb_zlib_compression: c_int = 2;
608+
pub const rocksdb_bz2_compression: c_int = 3;
609+
pub const rocksdb_lz4_compression: c_int = 4;
610+
pub const rocksdb_lz4hc_compression: c_int = 5;
619611

620-
#[derive(Copy, Clone, Debug)]
621-
#[repr(C)]
622-
pub enum rocksdb_compaction_style_t {
623-
Level = 0,
624-
Yniversal = 1,
625-
Fifo = 2,
626-
}
612+
pub const rocksdb_level_compaction: c_int = 0;
613+
pub const rocksdb_universal_compaction: c_int = 1;
614+
pub const rocksdb_fifo_compaction: c_int = 2;
627615

628-
#[derive(Copy, Clone, Debug)]
629-
#[repr(C)]
630-
pub enum rocksdb_compaction_stop_style_t {
631-
SimilarSize = 0,
632-
TotalSize = 1,
633-
}
616+
pub const rocksdb_similar_size_compaction_stop_style: c_int = 0;
617+
pub const rocksdb_total_size_compaction_stop_style: c_int = 1;
634618

635619
pub enum rocksdb_t { }
636620

tests/c_test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ fn test_ffi() {
423423
rocksdb_block_based_options_set_block_cache(table_options, cache);
424424
rocksdb_options_set_block_based_table_factory(options, table_options);
425425

426-
let no_compression = rocksdb_compression_type_t::no;
426+
let no_compression = rocksdb_no_compression;
427427
rocksdb_options_set_compression(options, no_compression);
428428
rocksdb_options_set_compression_options(options, -14, -1, 0, 0);
429429
let compression_levels = vec![

0 commit comments

Comments
 (0)