1 /* -*- c-basic-offset: 2 -*- */
2 /*
3   Copyright(C) 2015-2017 Brazil
4 
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9 
10   This library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14 
15   You should have received a copy of the GNU Lesser General Public
16   License along with this library; if not, write to the Free Software
17   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
18 */
19 
20 #pragma once
21 
22 #ifdef  __cplusplus
23 extern "C" {
24 #endif
25 
26 /* Just for backward compatibility. Use grn_obj_is_true() instead. */
27 #define GRN_OBJ_IS_TRUE(ctx, obj, result) do {  \
28   result = grn_obj_is_true(ctx, obj);           \
29 } while (0)
30 
31 GRN_API grn_bool grn_obj_is_true(grn_ctx *ctx, grn_obj *obj);
32 
33 GRN_API grn_bool grn_obj_is_builtin(grn_ctx *ctx, grn_obj *obj);
34 GRN_API grn_bool grn_obj_is_bulk(grn_ctx *ctx, grn_obj *obj);
35 GRN_API grn_bool grn_obj_is_text_family_bulk(grn_ctx *ctx, grn_obj *obj);
36 GRN_API grn_bool grn_obj_is_table(grn_ctx *ctx, grn_obj *obj);
37 GRN_API grn_bool grn_obj_is_column(grn_ctx *ctx, grn_obj *obj);
38 GRN_API grn_bool grn_obj_is_scalar_column(grn_ctx *ctx, grn_obj *obj);
39 GRN_API grn_bool grn_obj_is_vector_column(grn_ctx *ctx, grn_obj *obj);
40 GRN_API grn_bool grn_obj_is_weight_vector_column(grn_ctx *ctx, grn_obj *obj);
41 GRN_API grn_bool grn_obj_is_reference_column(grn_ctx *ctx, grn_obj *obj);
42 GRN_API grn_bool grn_obj_is_data_column(grn_ctx *ctx, grn_obj *obj);
43 GRN_API grn_bool grn_obj_is_index_column(grn_ctx *ctx, grn_obj *obj);
44 GRN_API grn_bool grn_obj_is_accessor(grn_ctx *ctx, grn_obj *obj);
45 GRN_API grn_bool grn_obj_is_key_accessor(grn_ctx *ctx, grn_obj *obj);
46 GRN_API grn_bool grn_obj_is_type(grn_ctx *ctx, grn_obj *obj);
47 GRN_API grn_bool grn_obj_is_text_family_type(grn_ctx *ctx, grn_obj *obj);
48 GRN_API grn_bool grn_obj_is_proc(grn_ctx *ctx, grn_obj *obj);
49 GRN_API grn_bool grn_obj_is_tokenizer_proc(grn_ctx *ctx, grn_obj *obj);
50 GRN_API grn_bool grn_obj_is_function_proc(grn_ctx *ctx, grn_obj *obj);
51 GRN_API grn_bool grn_obj_is_selector_proc(grn_ctx *ctx, grn_obj *obj);
52 GRN_API grn_bool grn_obj_is_selector_only_proc(grn_ctx *ctx, grn_obj *obj);
53 GRN_API grn_bool grn_obj_is_normalizer_proc(grn_ctx *ctx, grn_obj *obj);
54 GRN_API grn_bool grn_obj_is_token_filter_proc(grn_ctx *ctx, grn_obj *obj);
55 GRN_API grn_bool grn_obj_is_scorer_proc(grn_ctx *ctx, grn_obj *obj);
56 GRN_API grn_bool grn_obj_is_window_function_proc(grn_ctx *ctx, grn_obj *obj);
57 GRN_API grn_bool grn_obj_is_expr(grn_ctx *ctx, grn_obj *obj);
58 
59 GRN_API grn_rc grn_obj_cast(grn_ctx *ctx,
60                             grn_obj *src,
61                             grn_obj *dest,
62                             grn_bool add_record_if_not_exist);
63 
64 GRN_API grn_rc grn_obj_reindex(grn_ctx *ctx, grn_obj *obj);
65 
66 GRN_API void grn_obj_touch(grn_ctx *ctx, grn_obj *obj, grn_timeval *tv);
67 GRN_API uint32_t grn_obj_get_last_modified(grn_ctx *ctx, grn_obj *obj);
68 GRN_API grn_bool grn_obj_is_dirty(grn_ctx *ctx, grn_obj *obj);
69 
70 GRN_API const char *grn_obj_type_to_string(uint8_t type);
71 
72 GRN_API grn_bool grn_obj_name_is_column(grn_ctx *ctx,
73                                         const char *name,
74                                         int name_len);
75 
76 GRN_API grn_bool grn_obj_is_corrupt(grn_ctx *ctx, grn_obj *obj);
77 GRN_API size_t grn_obj_get_disk_usage(grn_ctx *ctx, grn_obj *obj);
78 
79 #ifdef __cplusplus
80 }
81 #endif
82