susumu.yata
null+****@clear*****
Fri Nov 20 19:13:57 JST 2015
susumu.yata 2015-11-20 19:13:57 +0900 (Fri, 20 Nov 2015) New Revision: 2eef1cac11d4b46e69a125dd2235f5249e6897dd https://github.com/groonga/groonga/commit/2eef1cac11d4b46e69a125dd2235f5249e6897dd Message: grn_ts: add files for new modules Added files: lib/ts/ts_cursor.c lib/ts/ts_cursor.h lib/ts/ts_plan.c lib/ts/ts_plan.h lib/ts/ts_sorter.c lib/ts/ts_sorter.h Modified files: lib/ts/sources.am Modified: lib/ts/sources.am (+6 -0) =================================================================== --- lib/ts/sources.am 2015-11-20 18:54:16 +0900 (37732d6) +++ lib/ts/sources.am 2015-11-20 19:13:57 +0900 (5d89b05) @@ -1,6 +1,8 @@ libgrnts_la_SOURCES = \ ts_buf.c \ ts_buf.h \ + ts_cursor.c \ + ts_cursor.h \ ts_expr.c \ ts_expr.h \ ts_expr_builder.c \ @@ -12,6 +14,10 @@ libgrnts_la_SOURCES = \ ts_log.h \ ts_op.c \ ts_op.h \ + ts_plan.c \ + ts_plan.h \ + ts_sorter.c \ + ts_sorter.h \ ts_str.c \ ts_str.h \ ts_types.h \ Added: lib/ts/ts_cursor.c (+19 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_cursor.c 2015-11-20 19:13:57 +0900 (676464b) @@ -0,0 +1,19 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "ts_cursor.h" Added: lib/ts/ts_cursor.h (+55 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_cursor.h 2015-11-20 19:13:57 +0900 (56320df) @@ -0,0 +1,55 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef GRN_TS_CURSOR_H +#define GRN_TS_CURSOR_H + +#include "../grn.h" + +#include "ts_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GRN_TS_HASH_CURSOR, + GRN_TS_PAT_CURSOR, + GRN_TS_DAT_CURSOR, + GRN_TS_ARRAY_CURSOR +} grn_ts_cursor_type; + +typedef struct { + grn_ts_cursor_type type; +} grn_ts_cursor; + +/* grn_ts_cursor_open() creates a cursor. */ +grn_rc grn_ts_cursor_open(grn_ctx *ctx, grn_ts_cursor **cursor); + +/* grn_ts_cursor_close() destroys a cursor. */ +grn_rc grn_ts_cursor_close(grn_ctx *ctx, grn_ts_cursor *cursor); + +/* grn_ts_cursor_read() reads records from a cursor. */ +grn_rc grn_ts_cursor_read(grn_ctx *ctx, grn_ts_cursor *cursor, + grn_ts_record *out, size_t max_n_out, size_t *n_out); + +#ifdef __cplusplus +} +#endif + +#endif /* GRN_TS_CURSOR_H */ Added: lib/ts/ts_plan.c (+21 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_plan.c 2015-11-20 19:13:57 +0900 (2bd2a4b) @@ -0,0 +1,21 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "ts_plan.h" + +// TODO Added: lib/ts/ts_plan.h (+85 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_plan.h 2015-11-20 19:13:57 +0900 (838f1f7) @@ -0,0 +1,85 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef GRN_TS_PLAN_H +#define GRN_TS_PLAN_H + +#include "../grn.h" + +#include "ts_cursor.h" +#include "ts_expr.h" +#include "ts_sorter.h" +#include "ts_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { +} grn_ts_plan_node; + +typedef struct { + grn_obj *table; + grn_ts_plan_node *root; +} grn_ts_plan; + +/* grn_ts_plan_open() creates a plan. */ +grn_rc grn_ts_plan_open(grn_ctx *ctx, grn_obj *table, grn_ts_plan_node *root, + grn_ts_plan **plan); + +/* grn_ts_plan_close() destroys a plan. */ +grn_rc grn_ts_plan_close(grn_ctx *ctx, grn_ts_plan *plan); + +/* TODO: A struct for output should be provided? */ +/* grn_ts_plan_exec() executes a plan. */ +grn_rc grn_ts_plan_exec(grn_ctx *ctx, grn_ts_plan *plan, + grn_ts_record **out, size_t *n_out, + grn_ts_buf *out_buf); + +typedef struct { + grn_obj *table; +} grn_ts_planner; + +/* grn_ts_planner_open() creates a planner. */ +grn_rc grn_ts_planner_open(grn_ctx *ctx, grn_obj *table, + grn_ts_planner **planner); + +/* grn_ts_planner_close() destroys a planner. */ +grn_rc grn_ts_planner_close(grn_ctx *ctx, grn_ts_planner *planner); + +/* grn_ts_planner_push_cursor() pushes a cursor. */ +grn_rc grn_ts_planner_push_cursor(grn_ctx *ctx, grn_ts_planner *planner, + grn_ts_cursor *cursor); + +/* grn_ts_planner_push_filter() pushes a filter. */ +grn_rc grn_ts_planner_push_filter(grn_ctx *ctx, grn_ts_planner *planner, + grn_ts_expr *expr); + +/* grn_ts_planner_push_scorer() pushes a scorer. */ +grn_rc grn_ts_planner_push_scorer(grn_ctx *ctx, grn_ts_planner *planner, + grn_ts_expr *expr); + +/* grn_ts_planner_push_sorter() pushes a sorter. */ +grn_rc grn_ts_planner_push_sorter(grn_ctx *ctx, grn_ts_planner *planner, + grn_ts_sorter *sorter); + +#ifdef __cplusplus +} +#endif + +#endif /* GRN_TS_PLAN_H */ Added: lib/ts/ts_sorter.c (+21 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_sorter.c 2015-11-20 19:13:57 +0900 (d0117ca) @@ -0,0 +1,21 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "ts_sorter.h" + +// TODO Added: lib/ts/ts_sorter.h (+61 -0) 100644 =================================================================== --- /dev/null +++ lib/ts/ts_sorter.h 2015-11-20 19:13:57 +0900 (001d823) @@ -0,0 +1,61 @@ +/* -*- c-basic-offset: 2 -*- */ +/* + Copyright(C) 2015 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef GRN_TS_SORTER_H +#define GRN_TS_SORTER_H + +#include "../grn.h" + +#include "ts_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { +} grn_ts_sorter_node; + +typedef struct { + grn_obj *table; + grn_ts_sorter_node *head; +} grn_ts_sorter; + +/* grn_ts_sorter_open() creates a sorter. */ +grn_rc grn_ts_sorter_open(grn_ctx *ctx, grn_obj *table, + grn_ts_sorter_node *head, grn_ts_sorter **sorter); + +/* grn_ts_sorter_close() destroys a sorter. */ +grn_rc grn_ts_sorter_close(grn_ctx *ctx, grn_ts_sorter *sorter); + +typedef struct { + grn_obj *table; +} grn_ts_sorter_builder; + +/* grn_ts_sorter_builder_open() creates a sorter builder. */ +grn_rc grn_ts_sorter_builder_open(grn_ctx *ctx, grn_obj *table, + grn_ts_sorter_builder **builder); + +/* grn_ts_sorter_builder_close() destroys a sorter builder. */ +grn_rc grn_ts_sorter_builder_close(grn_ctx *ctx, + grn_ts_sorter_builder *builder); + +#ifdef __cplusplus +} +#endif + +#endif /* GRN_TS_SORTER_H */ -------------- next part -------------- HTML����������������������������...下載