virtual void call(context &ctx, int argc, sqlite3_value **argv) override { if (argc != NArgs) { ctx.result_error_misuse(); } else { ctx.result<R>(apply_value_array<NArgs, R>(fun, argv)); } }
void step_call(context &ctx, int argc, sqlite3_value **values) { if (argc != NArgs) { ctx.result_error_misuse(); return; } invocation_data *as = get_state_create(ctx); apply_value_array<NArgs, void>(stepfun, values, as->state); //std::vector<value> vs(values, values+nargs); }
void step_call(context &ctx, int nargs, sqlite3_value **values) override { if (nargs != NArgs) { ctx.result_error_misuse(); return; } invocation_data *as = get_state_create(ctx); apply_value_array<NArgs, void>([this,&as](Ps... ps){ stepfun(as->state, std::forward<Ps>(ps)...); }, values); //std::vector<value> vs(values, values+nargs); }