diff options
Diffstat (limited to 'storage/mroonga/vendor/groonga/include/groonga/window_function.h')
-rw-r--r-- | storage/mroonga/vendor/groonga/include/groonga/window_function.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/include/groonga/window_function.h b/storage/mroonga/vendor/groonga/include/groonga/window_function.h new file mode 100644 index 00000000000..404fd04bbee --- /dev/null +++ b/storage/mroonga/vendor/groonga/include/groonga/window_function.h @@ -0,0 +1,73 @@ +/* + Copyright(C) 2016 Brazil + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + 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 +*/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GRN_WINDOW_DIRECTION_ASCENDING, + GRN_WINDOW_DIRECTION_DESCENDING +} grn_window_direction; + +typedef struct _grn_window grn_window; + +GRN_API grn_id grn_window_next(grn_ctx *ctx, + grn_window *window); +GRN_API grn_rc grn_window_rewind(grn_ctx *ctx, + grn_window *window); +GRN_API grn_rc grn_window_set_direction(grn_ctx *ctx, + grn_window *window, + grn_window_direction direction); +GRN_API grn_obj *grn_window_get_table(grn_ctx *ctx, + grn_window *window); +GRN_API grn_bool grn_window_is_sorted(grn_ctx *ctx, + grn_window *window); +GRN_API size_t grn_window_get_size(grn_ctx *ctx, + grn_window *window); + +typedef struct _grn_window_definition { + grn_table_sort_key *sort_keys; + size_t n_sort_keys; + grn_table_sort_key *group_keys; + size_t n_group_keys; +} grn_window_definition; + +typedef grn_rc grn_window_function_func(grn_ctx *ctx, + grn_obj *output_column, + grn_window *window, + grn_obj **args, + int n_args); + +GRN_API grn_obj *grn_window_function_create(grn_ctx *ctx, + const char *name, + int name_size, + grn_window_function_func func); + + +GRN_API grn_rc grn_table_apply_window_function(grn_ctx *ctx, + grn_obj *table, + grn_obj *output_column, + grn_window_definition *definition, + grn_obj *window_function_call); + +#ifdef __cplusplus +} +#endif |