Skip to content

Commit d79342d

Browse files
committed
extmod/modbtree: open(): Add option kwargs.
Namely: flags, cachesize, pagesize, minkeypage.
1 parent ed500e4 commit d79342d

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

extmod/modbtree.c

+14-3
Original file line numberDiff line numberDiff line change
@@ -344,19 +344,30 @@ STATIC FILEVTABLE btree_stream_fvtable = {
344344

345345
STATIC mp_obj_t mod_btree_open(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
346346
static const mp_arg_t allowed_args[] = {
347-
{ MP_QSTR_server_side, MP_ARG_KW_ONLY | MP_ARG_BOOL, {.u_bool = false} },
347+
{ MP_QSTR_flags, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
348+
{ MP_QSTR_cachesize, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
349+
{ MP_QSTR_pagesize, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
350+
{ MP_QSTR_minkeypage, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 0} },
348351
};
349352

350353
// Make sure we got a stream object
351354
mp_get_stream_raise(pos_args[0], MP_STREAM_OP_READ | MP_STREAM_OP_WRITE | MP_STREAM_OP_IOCTL);
352355

353356
struct {
354-
mp_arg_val_t server_side;
357+
mp_arg_val_t flags;
358+
mp_arg_val_t cachesize;
359+
mp_arg_val_t pagesize;
360+
mp_arg_val_t minkeypage;
355361
} args;
356362
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args,
357363
MP_ARRAY_SIZE(allowed_args), allowed_args, (mp_arg_val_t*)&args);
364+
BTREEINFO openinfo = {0};
365+
openinfo.flags = args.flags.u_int;
366+
openinfo.cachesize = args.cachesize.u_int;
367+
openinfo.psize = args.pagesize.u_int;
368+
openinfo.minkeypage = args.minkeypage.u_int;
358369

359-
DB *db = __bt_open(pos_args[0], &btree_stream_fvtable, /*openinfo*/NULL, /*dflags*/0);
370+
DB *db = __bt_open(pos_args[0], &btree_stream_fvtable, &openinfo, /*dflags*/0);
360371
if (db == NULL) {
361372
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(errno)));
362373
}

0 commit comments

Comments
 (0)