From 0a19cbd16a0a69c632da1810163b5fc86e41fc63 Mon Sep 17 00:00:00 2001 From: gwenn Date: Sat, 13 Aug 2016 13:12:48 +0200 Subject: [PATCH] Change VTabCursor::filter signature --- src/vtab/csvtab.rs | 3 +-- src/vtab/int_array.rs | 3 +-- src/vtab/mod.rs | 7 ++++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/vtab/csvtab.rs b/src/vtab/csvtab.rs index a49800f..b80bd3d 100644 --- a/src/vtab/csvtab.rs +++ b/src/vtab/csvtab.rs @@ -174,8 +174,7 @@ impl VTabCursor for CSVTabCursor { fn filter(&mut self, _idx_num: libc::c_int, _idx_str: *const libc::c_char, - _argc: libc::c_int, - _argv: *mut *mut ffi::sqlite3_value) + _args: &mut[*mut ffi::sqlite3_value]) -> Result<()> { { let offset_first_row = self.vtab().offset_first_row; diff --git a/src/vtab/int_array.rs b/src/vtab/int_array.rs index b8730a5..2052463 100644 --- a/src/vtab/int_array.rs +++ b/src/vtab/int_array.rs @@ -103,8 +103,7 @@ impl VTabCursor for IntArrayVTabCursor { fn filter(&mut self, _idx_num: libc::c_int, _idx_str: *const libc::c_char, - _argc: libc::c_int, - _argv: *mut *mut ffi::sqlite3_value) + _args: &mut[*mut ffi::sqlite3_value]) -> Result<()> { self.i = 0; Ok(()) diff --git a/src/vtab/mod.rs b/src/vtab/mod.rs index 8acc367..46b7e8a 100644 --- a/src/vtab/mod.rs +++ b/src/vtab/mod.rs @@ -60,8 +60,7 @@ pub trait VTabCursor>: Sized { fn filter(&mut self, idx_num: libc::c_int, idx_str: *const libc::c_char, - argc: libc::c_int, - argv: *mut *mut ffi::sqlite3_value) + args: &mut[*mut ffi::sqlite3_value]) -> Result<()>; /// Advance cursor to the next row of a result set initiated by `filter`. fn next(&mut self) -> Result<()>; @@ -259,9 +258,11 @@ unsafe extern "C" fn $filter(cursor: *mut ffi::sqlite3_vtab_cursor, argc: libc::c_int, argv: *mut *mut ffi::sqlite3_value) -> libc::c_int { + use std::slice; use vtab::cursor_error; + let mut args = slice::from_raw_parts_mut(argv, argc as usize); let cr = cursor as *mut $cursor; - cursor_error(cursor, (*cr).filter(idx_num, idx_str, argc, argv)) + cursor_error(cursor, (*cr).filter(idx_num, idx_str, &mut args)) } unsafe extern "C" fn $next(cursor: *mut ffi::sqlite3_vtab_cursor) -> libc::c_int { use vtab::cursor_error;