| 1 | /* -*- c-basic-offset: 2 -*- */ |
| 2 | /* |
| 3 | Copyright(C) 2009-2016 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 version 2.1 as published by the Free Software Foundation. |
| 8 | |
| 9 | This library is distributed in the hope that it will be useful, |
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 12 | Lesser General Public License for more details. |
| 13 | |
| 14 | You should have received a copy of the GNU Lesser General Public |
| 15 | License along with this library; if not, write to the Free Software |
| 16 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 17 | */ |
| 18 | |
| 19 | #pragma once |
| 20 | |
| 21 | #include "grn.h" |
| 22 | #include <groonga/nfkc.h> |
| 23 | |
| 24 | #ifdef __cplusplus |
| 25 | extern "C" { |
| 26 | #endif |
| 27 | |
| 28 | typedef enum { |
| 29 | GETOPT_OP_NONE = 0, |
| 30 | GETOPT_OP_ON, |
| 31 | GETOPT_OP_OFF, |
| 32 | GETOPT_OP_UPDATE |
| 33 | } grn_str_getopt_op; |
| 34 | |
| 35 | typedef struct { |
| 36 | const char opt; /* ends opt == 0 && longopt == NULL */ |
| 37 | const char *longopt; |
| 38 | const char **arg; /* if NULL, no arg are required */ |
| 39 | int flag; |
| 40 | grn_str_getopt_op op; |
| 41 | } grn_str_getopt_opt; |
| 42 | |
| 43 | GRN_API size_t grn_str_len(grn_ctx *ctx, const char *str, grn_encoding encoding, const char **last); |
| 44 | |
| 45 | #define GRN_STR_BLANK 0x80 |
| 46 | #define GRN_STR_ISBLANK(c) (c & 0x80) |
| 47 | #define GRN_STR_CTYPE(c) (c & 0x7f) |
| 48 | |
| 49 | GRN_API int grn_isspace(const char *s, grn_encoding encoding); |
| 50 | int8_t grn_atoi8(const char *nptr, const char *end, const char **rest); |
| 51 | uint8_t grn_atoui8(const char *nptr, const char *end, const char **rest); |
| 52 | int16_t grn_atoi16(const char *nptr, const char *end, const char **rest); |
| 53 | uint16_t grn_atoui16(const char *nptr, const char *end, const char **rest); |
| 54 | GRN_API int grn_atoi(const char *nptr, const char *end, const char **rest); |
| 55 | GRN_API unsigned int grn_atoui(const char *nptr, const char *end, const char **rest); |
| 56 | unsigned int grn_htoui(const char *nptr, const char *end, const char **rest); |
| 57 | GRN_API int64_t grn_atoll(const char *nptr, const char *end, const char **rest); |
| 58 | GRN_API uint64_t grn_atoull(const char *nptr, const char *end, const char **rest); |
| 59 | grn_rc grn_itoa(int i, char *p, char *end, char **rest); |
| 60 | grn_rc grn_lltoa(int64_t i, char *p, char *end, char **rest); |
| 61 | grn_rc grn_ulltoa(uint64_t i, char *p, char *end, char **rest); |
| 62 | GRN_API grn_rc grn_aton(grn_ctx *ctx, const char *p, const char *end, const char **rest, grn_obj *res); |
| 63 | |
| 64 | GRN_API void grn_itoh(unsigned int i, char *p, unsigned int len); |
| 65 | int grn_str_tok(const char *str, size_t str_len, char delim, const char **tokbuf, int buf_size, const char **rest); |
| 66 | GRN_API int grn_str_getopt(int argc, char * const argv[], const grn_str_getopt_opt *opts, int *flags); |
| 67 | |
| 68 | extern int grn_str_margin_size; |
| 69 | |
| 70 | char *grn_itob(grn_id id, char *p); |
| 71 | grn_id grn_btoi(char *b); |
| 72 | |
| 73 | grn_rc grn_substring(grn_ctx *ctx, char **str, char **str_end, int start, int end, grn_encoding encoding); |
| 74 | |
| 75 | GRN_API int grn_charlen_(grn_ctx *ctx, const char *str, const char *end, grn_encoding encoding); |
| 76 | GRN_API grn_str *grn_str_open_(grn_ctx *ctx, const char *str, unsigned int str_len, int flags, grn_encoding encoding); |
| 77 | |
| 78 | #define GRN_BULK_SET_CURR(buf,p) do {\ |
| 79 | if (GRN_BULK_OUTP(buf)) {\ |
| 80 | (buf)->u.b.curr = (char *)(p);\ |
| 81 | } else {\ |
| 82 | (buf)->header.flags = (char *)(p) - GRN_BULK_HEAD(buf);\ |
| 83 | }\ |
| 84 | } while (0) |
| 85 | |
| 86 | grn_rc grn_text_ulltoa(grn_ctx *ctx, grn_obj *buf, unsigned long long int i); |
| 87 | |
| 88 | GRN_API const char *grn_text_cgidec(grn_ctx *ctx, grn_obj *buf, |
| 89 | const char *p, const char *e, |
| 90 | const char *delimiters); |
| 91 | |
| 92 | #define GRN_TOK_VOID (0x00) |
| 93 | #define GRN_TOK_SYMBOL (0x01) |
| 94 | #define GRN_TOK_STRING (0x02) |
| 95 | #define GRN_TOK_QUOTE (0x03) |
| 96 | |
| 97 | GRN_API const char *grn_text_unesc_tok(grn_ctx *ctx, grn_obj *buf, |
| 98 | const char *p, const char *e, |
| 99 | char *tok_type); |
| 100 | |
| 101 | GRN_API void grn_str_url_path_normalize(grn_ctx *ctx, |
| 102 | const char *path, size_t path_len, |
| 103 | char *buf, size_t buf_len); |
| 104 | |
| 105 | #define GRN_OBJ_FORMAT_XML_ELEMENT_MASK (0x01<<1) |
| 106 | #define GRN_OBJ_FORMAT_XML_ELEMENT_RESULTSET (0x00<<1) |
| 107 | #define GRN_OBJ_FORMAT_XML_ELEMENT_NAVIGATIONENTRY (0x01<<1) |
| 108 | |
| 109 | #include <stdio.h> |
| 110 | GRN_API grn_rc grn_text_fgets(grn_ctx *ctx, grn_obj *buf, FILE *fp); |
| 111 | |
| 112 | grn_bool grn_bulk_is_zero(grn_ctx *ctx, grn_obj *obj); |
| 113 | |
| 114 | #ifdef __cplusplus |
| 115 | } |
| 116 | #endif |
| 117 | |