Skip to content

Commit 8e14625

Browse files
committed
Update rust_fst version to 0.3, adapt wrapper to new APIs (fixes #6)
1 parent df92685 commit 8e14625

5 files changed

Lines changed: 32 additions & 22 deletions

File tree

fstwrapper/Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
name = "fst-wrapper"
4-
version = "0.1.2"
4+
version = "0.3.0"
55
authors = ["Johannes Baiter <johannes.baiter@gmail.com>"]
66

77
[lib]
@@ -10,4 +10,6 @@ crate-type = ["dylib"]
1010

1111
[dependencies]
1212
libc = "0.2"
13-
fst = "^0.1.30"
13+
fst = "^0.3.0"
14+
fst-levenshtein = "^0.2.0"
15+
fst-regex = "^0.2.0"

fstwrapper/src/map.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
extern crate libc;
2+
extern crate fst;
3+
extern crate fst_levenshtein;
4+
extern crate fst_regex;
25

36
use std::error::Error;
47
use std::fs::File;
58
use std::io;
69
use std::ptr;
7-
use fst::{IntoStreamer, Streamer, Levenshtein, Regex, Map, MapBuilder};
10+
use fst::{IntoStreamer, Streamer, Map, MapBuilder};
811
use fst::map;
912
use fst::raw;
1013

@@ -31,8 +34,8 @@ pub struct MapOpItem {
3134

3235
pub type FileMapBuilder = MapBuilder<&'static mut io::BufWriter<File>>;
3336
pub type MemMapBuilder = MapBuilder<Vec<u8>>;
34-
pub type MapLevStream = map::Stream<'static, &'static Levenshtein>;
35-
pub type MapRegexStream = map::Stream<'static, &'static Regex>;
37+
pub type MapLevStream = map::Stream<'static, &'static fst_levenshtein::Levenshtein>;
38+
pub type MapRegexStream = map::Stream<'static, &'static fst_regex::Regex>;
3639

3740

3841
#[no_mangle]
@@ -87,7 +90,8 @@ pub extern "C" fn fst_memmapbuilder_finish(ctx: *mut Context, ptr: *mut MemMapBu
8790
}
8891

8992
#[no_mangle]
90-
pub extern "C" fn fst_map_open(ctx: *mut Context, path: *mut libc::c_char) -> *mut Map {
93+
#[allow(unused_unsafe)]
94+
pub unsafe extern "C" fn fst_map_open(ctx: *mut Context, path: *mut libc::c_char) -> *mut Map {
9195
let path = cstr_to_str(path);
9296
let map = with_context!(ctx, ptr::null_mut(), Map::from_path(path));
9397
to_raw_ptr(map)
@@ -163,7 +167,7 @@ pub extern "C" fn fst_mapvalues_next(ctx: *mut Context, ptr: *mut map::Values) -
163167

164168
#[no_mangle]
165169
pub extern "C" fn fst_map_levsearch(map_ptr: *mut Map,
166-
lev_ptr: *mut Levenshtein)
170+
lev_ptr: *mut fst_levenshtein::Levenshtein)
167171
-> *mut MapLevStream {
168172
let map = mutref_from_ptr!(map_ptr);
169173
let lev = ref_from_ptr!(lev_ptr);
@@ -174,7 +178,7 @@ map_make_next_fn!(fst_map_levstream_next, *mut MapLevStream);
174178

175179

176180
#[no_mangle]
177-
pub extern "C" fn fst_map_regexsearch(map_ptr: *mut Map, regex_ptr: *mut Regex)
181+
pub extern "C" fn fst_map_regexsearch(map_ptr: *mut Map, regex_ptr: *mut fst_regex::Regex)
178182
-> *mut MapRegexStream {
179183
let map = mutref_from_ptr!(map_ptr);
180184
let regex = ref_from_ptr!(regex_ptr);

fstwrapper/src/set.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
extern crate libc;
22
extern crate fst;
3+
extern crate fst_levenshtein;
4+
extern crate fst_regex;
35

46

57
use std::error::Error;
68
use std::fs::File;
79
use std::io;
810
use std::ptr;
9-
use fst::{IntoStreamer, Streamer, Levenshtein, Regex, Set, SetBuilder};
11+
use fst::{IntoStreamer, Streamer, Set, SetBuilder};
1012
use fst::set;
1113

1214
use util::{Context, cstr_to_str, to_raw_ptr};
1315

1416

1517
pub type FileSetBuilder = SetBuilder<&'static mut io::BufWriter<File>>;
1618
pub type MemSetBuilder = SetBuilder<Vec<u8>>;
17-
pub type SetLevStream = set::Stream<'static, &'static Levenshtein>;
18-
pub type SetRegexStream = set::Stream<'static, &'static Regex>;
19+
pub type SetLevStream = set::Stream<'static, &'static fst_levenshtein::Levenshtein>;
20+
pub type SetRegexStream = set::Stream<'static, &'static fst_regex::Regex>;
1921

2022

2123
#[no_mangle]
@@ -67,7 +69,8 @@ pub extern "C" fn fst_memsetbuilder_finish(ctx: *mut Context, ptr: *mut MemSetBu
6769
}
6870

6971
#[no_mangle]
70-
pub extern "C" fn fst_set_open(ctx: *mut Context, cpath: *mut libc::c_char) -> *mut Set {
72+
#[allow(unused_unsafe)]
73+
pub unsafe extern "C" fn fst_set_open(ctx: *mut Context, cpath: *mut libc::c_char) -> *mut Set {
7174
let path = cstr_to_str(cpath);
7275
let set = with_context!(ctx, ptr::null_mut(), Set::from_path(path));
7376
to_raw_ptr(set)
@@ -118,7 +121,7 @@ pub extern "C" fn fst_set_issuperset(self_ptr: *mut Set, oth_ptr: *mut Set) -> b
118121

119122
#[no_mangle]
120123
pub extern "C" fn fst_set_levsearch(set_ptr: *mut Set,
121-
lev_ptr: *mut Levenshtein)
124+
lev_ptr: *mut fst_levenshtein::Levenshtein)
122125
-> *mut SetLevStream {
123126
let set = mutref_from_ptr!(set_ptr);
124127
let lev = ref_from_ptr!(lev_ptr);
@@ -128,7 +131,7 @@ make_free_fn!(fst_set_levstream_free, *mut SetLevStream);
128131
set_make_next_fn!(fst_set_levstream_next, *mut SetLevStream);
129132

130133
#[no_mangle]
131-
pub extern "C" fn fst_set_regexsearch(set_ptr: *mut Set, regex_ptr: *mut Regex)
134+
pub extern "C" fn fst_set_regexsearch(set_ptr: *mut Set, regex_ptr: *mut fst_regex::Regex)
132135
-> *mut SetRegexStream {
133136
let set = mutref_from_ptr!(set_ptr);
134137
let regex = ref_from_ptr!(regex_ptr);

fstwrapper/src/util.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
extern crate libc;
2+
extern crate fst_levenshtein;
3+
extern crate fst_regex;
24

35

46
use std::error::Error;
@@ -7,7 +9,6 @@ use std::fs::File;
79
use std::intrinsics;
810
use std::io;
911
use std::ptr;
10-
use fst::{Levenshtein,Regex};
1112

1213

1314
/// Exposes information about errors over the ABI
@@ -89,18 +90,18 @@ make_free_fn!(fst_bufwriter_free, *mut io::BufWriter<File>);
8990
pub extern "C" fn fst_levenshtein_new(ctx: *mut Context,
9091
c_key: *mut libc::c_char,
9192
max_dist: libc::uint32_t)
92-
-> *mut Levenshtein {
93+
-> *mut fst_levenshtein::Levenshtein {
9394
let key = cstr_to_str(c_key);
9495
let lev = with_context!(ctx, ptr::null_mut(),
95-
Levenshtein::new(key, max_dist));
96+
fst_levenshtein::Levenshtein::new(key, max_dist));
9697
to_raw_ptr(lev)
9798
}
98-
make_free_fn!(fst_levenshtein_free, *mut Levenshtein);
99+
make_free_fn!(fst_levenshtein_free, *mut fst_levenshtein::Levenshtein);
99100

100101
#[no_mangle]
101-
pub extern "C" fn fst_regex_new(ctx: *mut Context, c_pat: *mut libc::c_char) -> *mut Regex {
102+
pub extern "C" fn fst_regex_new(ctx: *mut Context, c_pat: *mut libc::c_char) -> *mut fst_regex::Regex {
102103
let pat = cstr_to_str(c_pat);
103-
let re = with_context!(ctx, ptr::null_mut(), Regex::new(pat));
104+
let re = with_context!(ctx, ptr::null_mut(), fst_regex::Regex::new(pat));
104105
to_raw_ptr(re)
105106
}
106-
make_free_fn!(fst_regex_free, *mut Regex);
107+
make_free_fn!(fst_regex_free, *mut fst_regex::Regex);

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name='rust-fst',
8-
version='0.1.2',
8+
version='0.2.0dev',
99
author='Johannes Baiter',
1010
author_email='johannes.baiter@gmail.com',
1111
description=('Python bindings for the Rust `fst` create, providing sets '

0 commit comments

Comments
 (0)