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