null+****@clear*****
null+****@clear*****
2012年 2月 27日 (月) 18:08:59 JST
Susumu Yata 2012-02-27 18:08:59 +0900 (Mon, 27 Feb 2012) New Revision: 3ab6bbcaf888386ee71b8ce371a50255e007636e Log: add missing GRN_APIs. Modified files: lib/db.c lib/db.h lib/geo.c lib/geo.h lib/hash.c lib/hash.h lib/ii.c lib/ii.h lib/io.c lib/io.h lib/pat.c lib/pat.h lib/store.c lib/store.h lib/str.c lib/str.h Modified: lib/db.c (+3 -3) =================================================================== --- lib/db.c 2012-02-27 16:28:30 +0900 (f186ca5) +++ lib/db.c 2012-02-27 18:08:59 +0900 (5930c80) @@ -248,7 +248,7 @@ grn_db_curr_id(grn_ctx *ctx, grn_obj *db) } /* s must be validated by caller */ -grn_rc +GRN_API grn_rc grn_db_close(grn_ctx *ctx, grn_obj *db) { grn_id id; @@ -896,7 +896,7 @@ grn_table_create(grn_ctx *ctx, const char *name, unsigned int name_size, GRN_API_RETURN(res); } -grn_obj * +GRN_API grn_obj * grn_table_open(grn_ctx *ctx, const char *name, unsigned int name_size, const char *path) { grn_obj *db; @@ -1245,7 +1245,7 @@ grn_view_transcript(grn_ctx *ctx, const char *path, return res; } -grn_id +GRN_API grn_id grn_view_add(grn_ctx *ctx, grn_obj *view, grn_obj *table) { if (!view || view->header.type != GRN_TABLE_VIEW) { Modified: lib/db.h (+5 -4) =================================================================== --- lib/db.h 2012-02-27 16:28:30 +0900 (9d47ca7) +++ lib/db.h 2012-02-27 18:08:59 +0900 (fd4c4bf) @@ -78,7 +78,7 @@ typedef struct { grn_id range; } grn_obj_spec; -grn_rc grn_db_close(grn_ctx *ctx, grn_obj *db); +GRN_API grn_rc grn_db_close(grn_ctx *ctx, grn_obj *db); grn_obj *grn_db_keys(grn_obj *s); @@ -111,7 +111,7 @@ void grn_table_add_subrec(grn_obj *table, grn_rset_recinfo *ri, int score, grn_obj *grn_obj_graft(grn_ctx *ctx, grn_obj *obj); -grn_id grn_view_add(grn_ctx *ctx, grn_obj *view, grn_obj *table); +GRN_API grn_id grn_view_add(grn_ctx *ctx, grn_obj *view, grn_obj *table); grn_rc grn_column_name_(grn_ctx *ctx, grn_obj *obj, grn_obj *buf); @@ -322,8 +322,9 @@ GRN_API grn_rc grn_obj_cast(grn_ctx *ctx, grn_obj *src, grn_obj *dest, int addp) * ctxが使用するdbの中でnameに対応付けて既存のtableを開く。 * dbに登録されている名前付きの永続テーブルを開く場合はgrn_ctx_get()を使用するのが望ましい。 **/ -grn_obj *grn_table_open(grn_ctx *ctx, - const char *name, unsigned int name_size, const char *path); +GRN_API grn_obj *grn_table_open(grn_ctx *ctx, + const char *name, unsigned int name_size, + const char *path); /** * grn_column_open: Modified: lib/geo.c (+5 -5) =================================================================== --- lib/geo.c 2012-02-27 16:28:30 +0900 (564e16a) +++ lib/geo.c 2012-02-27 18:08:59 +0900 (c7bc00c) @@ -1714,7 +1714,7 @@ exit : return n; } -grn_bool +GRN_API grn_bool grn_geo_in_circle(grn_ctx *ctx, grn_obj *point, grn_obj *center, grn_obj *radius_or_point, grn_geo_approximate_type approximate_type) @@ -1792,7 +1792,7 @@ grn_geo_in_rectangle_raw(grn_ctx *ctx, grn_geo_point *point, (point->latitude <= top_left->latitude)); } -grn_bool +GRN_API grn_bool grn_geo_in_rectangle(grn_ctx *ctx, grn_obj *point, grn_obj *top_left, grn_obj *bottom_right) { @@ -1917,7 +1917,7 @@ grn_geo_distance(grn_ctx *ctx, grn_obj *point1, grn_obj *point2, return d; } -double +GRN_API double grn_geo_distance_rectangle(grn_ctx *ctx, grn_obj *point1, grn_obj *point2) { double d = 0; @@ -1966,7 +1966,7 @@ exit : return d; } -double +GRN_API double grn_geo_distance_sphere(grn_ctx *ctx, grn_obj *point1, grn_obj *point2) { double d = 0; @@ -1993,7 +1993,7 @@ exit : return d; } -double +GRN_API double grn_geo_distance_ellipsoid(grn_ctx *ctx, grn_obj *point1, grn_obj *point2) { double d = 0; Modified: lib/geo.h (+9 -6) =================================================================== --- lib/geo.h 2012-02-27 16:28:30 +0900 (a29bdc5) +++ lib/geo.h 2012-02-27 18:08:59 +0900 (5a0ef36) @@ -138,19 +138,22 @@ grn_rc grn_selector_geo_in_circle(grn_ctx *ctx, grn_obj *obj, grn_obj **args, grn_rc grn_selector_geo_in_rectangle(grn_ctx *ctx, grn_obj *obj, grn_obj **args, int nargs, grn_obj *res, grn_operator op); -grn_bool grn_geo_in_circle(grn_ctx *ctx, grn_obj *point, grn_obj *center, +GRN_API grn_bool grn_geo_in_circle(grn_ctx *ctx, grn_obj *point, grn_obj *center, grn_obj *radius_or_point, grn_geo_approximate_type approximate_type); -grn_bool grn_geo_in_rectangle(grn_ctx *ctx, grn_obj *point, - grn_obj *top_left, grn_obj *bottom_right); +GRN_API grn_bool grn_geo_in_rectangle(grn_ctx *ctx, grn_obj *point, + grn_obj *top_left, grn_obj *bottom_right); grn_bool grn_geo_in_rectangle_raw(grn_ctx *ctx, grn_geo_point *point, grn_geo_point *top_left, grn_geo_point *bottom_right); double grn_geo_distance(grn_ctx *ctx, grn_obj *point1, grn_obj *point2, grn_geo_approximate_type type); -double grn_geo_distance_rectangle(grn_ctx *ctx, grn_obj *point1, grn_obj *point2); -double grn_geo_distance_sphere(grn_ctx *ctx, grn_obj *point1, grn_obj *point2); -double grn_geo_distance_ellipsoid(grn_ctx *ctx, grn_obj *point1, grn_obj *point2); +GRN_API double grn_geo_distance_rectangle(grn_ctx *ctx, grn_obj *point1, + grn_obj *point2); +GRN_API double grn_geo_distance_sphere(grn_ctx *ctx, grn_obj *point1, + grn_obj *point2); +GRN_API double grn_geo_distance_ellipsoid(grn_ctx *ctx, grn_obj *point1, + grn_obj *point2); double grn_geo_distance_rectangle_raw(grn_ctx *ctx, grn_geo_point *point1, grn_geo_point *point2); Modified: lib/hash.c (+2 -2) =================================================================== --- lib/hash.c 2012-02-27 16:28:30 +0900 (e30f1f0) +++ lib/hash.c 2012-02-27 18:08:59 +0900 (d39bf84) @@ -1044,7 +1044,7 @@ grn_hash_remove(grn_ctx *ctx, const char *path) return grn_io_remove(ctx, path); } -grn_rc +GRN_API grn_rc grn_hash_truncate(grn_ctx *ctx, grn_hash *hash) { grn_rc rc; @@ -2073,7 +2073,7 @@ entry2id(grn_ctx *ctx, grn_hash *hash, entry *e) return id; } -int +GRN_API int grn_hash_sort(grn_ctx *ctx, grn_hash *hash, int limit, grn_array *result, grn_table_sort_optarg *optarg) { Modified: lib/hash.h (+3 -3) =================================================================== --- lib/hash.h 2012-02-27 16:28:30 +0900 (efe364f) +++ lib/hash.h 2012-02-27 18:08:59 +0900 (abbd7ea) @@ -165,7 +165,7 @@ struct _grn_array_cursor { #define GRN_ARRAY_SIZE(array) (*((array)->n_entries)) -grn_rc grn_array_truncate(grn_ctx *ctx, grn_array *array); +GRN_API grn_rc grn_array_truncate(grn_ctx *ctx, grn_array *array); grn_rc grn_array_copy_sort_key(grn_ctx *ctx, grn_array *array, grn_table_sort_key *keys, int n_keys); @@ -268,8 +268,8 @@ struct _grn_table_sort_optarg { int offset; }; -int grn_hash_sort(grn_ctx *ctx, grn_hash *hash, int limit, - grn_array *result, grn_table_sort_optarg *optarg); +GRN_API int grn_hash_sort(grn_ctx *ctx, grn_hash *hash, int limit, + grn_array *result, grn_table_sort_optarg *optarg); grn_rc grn_hash_lock(grn_ctx *ctx, grn_hash *hash, int timeout); grn_rc grn_hash_unlock(grn_ctx *ctx, grn_hash *hash); Modified: lib/ii.c (+5 -5) =================================================================== --- lib/ii.c 2012-02-27 16:28:30 +0900 (e41bc97) +++ lib/ii.c 2012-02-27 18:08:59 +0900 (bb344c0) @@ -3446,7 +3446,7 @@ _grn_ii_create(grn_ctx *ctx, grn_ii *ii, const char *path, grn_obj *lexicon, uin return ii; } -grn_ii * +GRN_API grn_ii * grn_ii_create(grn_ctx *ctx, const char *path, grn_obj *lexicon, uint32_t flags) { grn_ii *ii = NULL; @@ -3461,7 +3461,7 @@ grn_ii_create(grn_ctx *ctx, const char *path, grn_obj *lexicon, uint32_t flags) return ii; } -grn_rc +GRN_API grn_rc grn_ii_remove(grn_ctx *ctx, const char *path) { grn_rc rc; @@ -3514,7 +3514,7 @@ exit: return rc; } -grn_ii * +GRN_API grn_ii * grn_ii_open(grn_ctx *ctx, const char *path, grn_obj *lexicon) { grn_io *seg, *chunk; @@ -3561,7 +3561,7 @@ grn_ii_open(grn_ctx *ctx, const char *path, grn_obj *lexicon) return ii; } -grn_rc +GRN_API grn_rc grn_ii_close(grn_ctx *ctx, grn_ii *ii) { grn_rc rc; @@ -4951,7 +4951,7 @@ grn_uvector2updspecs(grn_ctx *ctx, grn_ii *ii, grn_id rid, unsigned int section, return GRN_SUCCESS; } -grn_rc +GRN_API grn_rc grn_ii_column_update(grn_ctx *ctx, grn_ii *ii, grn_id rid, unsigned int section, grn_obj *oldvalue, grn_obj *newvalue, grn_obj *posting) { Modified: lib/ii.h (+8 -6) =================================================================== --- lib/ii.h 2012-02-27 16:28:30 +0900 (4866860) +++ lib/ii.h 2012-02-27 18:08:59 +0900 (bc2165b) @@ -98,10 +98,11 @@ struct _grn_ii_updspec { typedef struct _grn_ii_updspec grn_ii_updspec; -grn_ii *grn_ii_create(grn_ctx *ctx, const char *path, grn_obj *lexicon, uint32_t flags); -grn_ii *grn_ii_open(grn_ctx *ctx, const char *path, grn_obj *lexicon); -grn_rc grn_ii_close(grn_ctx *ctx, grn_ii *ii); -grn_rc grn_ii_remove(grn_ctx *ctx, const char *path); +GRN_API grn_ii *grn_ii_create(grn_ctx *ctx, const char *path, grn_obj *lexicon, + uint32_t flags); +GRN_API grn_ii *grn_ii_open(grn_ctx *ctx, const char *path, grn_obj *lexicon); +GRN_API grn_rc grn_ii_close(grn_ctx *ctx, grn_ii *ii); +GRN_API grn_rc grn_ii_remove(grn_ctx *ctx, const char *path); grn_rc grn_ii_info(grn_ctx *ctx, grn_ii *ii, uint64_t *seg_size, uint64_t *chunk_size); grn_rc grn_ii_update_one(grn_ctx *ctx, grn_ii *ii, uint32_t key, grn_ii_updspec *u, grn_hash *h); @@ -166,8 +167,9 @@ struct _grn_select_optarg { int max_size; }; -grn_rc grn_ii_column_update(grn_ctx *ctx, grn_ii *ii, grn_id id, unsigned int section, - grn_obj *oldvalue, grn_obj *newvalue, grn_obj *posting); +GRN_API grn_rc grn_ii_column_update(grn_ctx *ctx, grn_ii *ii, grn_id id, + unsigned int section, grn_obj *oldvalue, + grn_obj *newvalue, grn_obj *posting); grn_rc grn_ii_term_extract(grn_ctx *ctx, grn_ii *ii, const char *string, unsigned int string_len, grn_hash *s, grn_operator op, grn_select_optarg *optarg); Modified: lib/io.c (+5 -5) =================================================================== --- lib/io.c 2012-02-27 16:28:30 +0900 (dcb0026) +++ lib/io.c 2012-02-27 18:08:59 +0900 (817fd17) @@ -171,7 +171,7 @@ grn_io_unregister(grn_io *io) } } -grn_io * +GRN_API grn_io * grn_io_create(grn_ctx *ctx, const char *path, uint32_t header_size, uint32_t segment_size, uint32_t max_segment, grn_io_mode mode, uint32_t flags) { @@ -480,7 +480,7 @@ grn_io_open(grn_ctx *ctx, const char *path, grn_io_mode mode) return NULL; } -grn_rc +GRN_API grn_rc grn_io_close(grn_ctx *ctx, grn_io *io) { int i; @@ -535,7 +535,7 @@ grn_io_path(grn_io *io) return io->path; } -void * +GRN_API void * grn_io_header(grn_io *io) { return io->user_header; @@ -1447,7 +1447,7 @@ grn_io_anon_unmap(grn_ctx *ctx, grn_io_mapinfo *mi, size_t length) GRN_MUNMAP(ctx, &mi->fmo, mi->map, length); } -grn_rc +GRN_API grn_rc grn_io_lock(grn_ctx *ctx, grn_io *io, int timeout) { static int _ncalls = 0, _ncolls = 0; @@ -1487,7 +1487,7 @@ grn_io_lock(grn_ctx *ctx, grn_io *io, int timeout) return ctx->rc; } -void +GRN_API void grn_io_unlock(grn_io *io) { if (io) { Modified: lib/io.h (+8 -6) =================================================================== --- lib/io.h 2012-02-27 16:28:30 +0900 (b65173f) +++ lib/io.h 2012-02-27 18:08:59 +0900 (38bc749) @@ -117,14 +117,16 @@ struct _grn_io { uint32_t *lock; }; -grn_io *grn_io_create(grn_ctx *ctx, const char *path, uint32_t header_size, uint32_t segment_size, - uint32_t max_segment, grn_io_mode mode, unsigned int flags); +GRN_API grn_io *grn_io_create(grn_ctx *ctx, const char *path, + uint32_t header_size, uint32_t segment_size, + uint32_t max_segment, grn_io_mode mode, + unsigned int flags); grn_io *grn_io_open(grn_ctx *ctx, const char *path, grn_io_mode mode); -grn_rc grn_io_close(grn_ctx *ctx, grn_io *io); +GRN_API grn_rc grn_io_close(grn_ctx *ctx, grn_io *io); grn_rc grn_io_remove(grn_ctx *ctx, const char *path); grn_rc grn_io_size(grn_ctx *ctx, grn_io *io, uint64_t *size); grn_rc grn_io_rename(grn_ctx *ctx, const char *old_name, const char *new_name); -void *grn_io_header(grn_io *io); +GRN_API void *grn_io_header(grn_io *io); void *grn_io_win_map(grn_io *io, grn_ctx *ctx, grn_io_win *iw, uint32_t segment, uint32_t offset, uint32_t size, grn_io_rw_mode mode); @@ -304,8 +306,8 @@ void *grn_io_array_at(grn_ctx *ctx, grn_io *io, uint32_t array, off_t offset, in void grn_io_segment_alloc(grn_ctx *ctx, grn_io *io, grn_io_array_info *ai, uint32_t lseg, int *flags, void **p); -grn_rc grn_io_lock(grn_ctx *ctx, grn_io *io, int timeout); -void grn_io_unlock(grn_io *io); +GRN_API grn_rc grn_io_lock(grn_ctx *ctx, grn_io *io, int timeout); +GRN_API void grn_io_unlock(grn_io *io); void grn_io_clear_lock(grn_io *io); uint32_t grn_io_is_locked(grn_io *io); Modified: lib/pat.c (+2 -2) =================================================================== --- lib/pat.c 2012-02-27 16:28:30 +0900 (525eba0) +++ lib/pat.c 2012-02-27 18:08:59 +0900 (17d043a) @@ -552,7 +552,7 @@ grn_pat_remove(grn_ctx *ctx, const char *path) return grn_io_remove(ctx, path); } -grn_rc +GRN_API grn_rc grn_pat_truncate(grn_ctx *ctx, grn_pat *pat) { grn_rc rc; @@ -1505,7 +1505,7 @@ grn_pat_next(grn_ctx *ctx, grn_pat *pat, grn_id id) return GRN_ID_NIL; } -grn_id +GRN_API grn_id grn_pat_at(grn_ctx *ctx, grn_pat *pat, grn_id id) { uint32_t key_size; Modified: lib/pat.h (+2 -2) =================================================================== --- lib/pat.h 2012-02-27 16:28:30 +0900 (30e484a) +++ lib/pat.h 2012-02-27 18:08:59 +0900 (3673c61) @@ -92,11 +92,11 @@ struct _grn_pat_cursor { grn_id grn_pat_curr_id(grn_ctx *ctx, grn_pat *pat); /* private */ -grn_rc grn_pat_truncate(grn_ctx *ctx, grn_pat *pat); +GRN_API grn_rc grn_pat_truncate(grn_ctx *ctx, grn_pat *pat); const char *_grn_pat_key(grn_ctx *ctx, grn_pat *pat, grn_id id, uint32_t *key_size); grn_id grn_pat_next(grn_ctx *ctx, grn_pat *pat, grn_id id); const char *grn_pat_get_value_(grn_ctx *ctx, grn_pat *pat, grn_id id, uint32_t *size); -grn_id grn_pat_at(grn_ctx *ctx, grn_pat *pat, grn_id id); +GRN_API grn_id grn_pat_at(grn_ctx *ctx, grn_pat *pat, grn_id id); void grn_pat_check(grn_ctx *ctx, grn_pat *pat); void grn_pat_inspect_nodes(grn_ctx *ctx, grn_pat *pat, grn_obj *buf); void grn_pat_cursor_inspect(grn_ctx *ctx, grn_pat_cursor *c, grn_obj *buf); Modified: lib/store.c (+6 -6) =================================================================== --- lib/store.c 2012-02-27 16:28:30 +0900 (80c77b8) +++ lib/store.c 2012-02-27 18:08:59 +0900 (d0fe36e) @@ -331,7 +331,7 @@ _grn_ja_create(grn_ctx *ctx, grn_ja *ja, const char *path, return ja; } -grn_ja * +GRN_API grn_ja * grn_ja_create(grn_ctx *ctx, const char *path, unsigned int max_element_size, uint32_t flags) { grn_ja *ja = NULL; @@ -378,7 +378,7 @@ grn_ja_info(grn_ctx *ctx, grn_ja *ja, unsigned int *max_element_size) return GRN_SUCCESS; } -grn_rc +GRN_API grn_rc grn_ja_close(grn_ctx *ctx, grn_ja *ja) { grn_rc rc; @@ -459,7 +459,7 @@ grn_ja_ref_raw(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, uint32_t *va return iw->addr; } -grn_rc +GRN_API grn_rc grn_ja_unref(grn_ctx *ctx, grn_io_win *iw) { if (!iw->addr) { return GRN_INVALID_ARGUMENT; } @@ -937,7 +937,7 @@ grn_ja_put_raw(grn_ctx *ctx, grn_ja *ja, grn_id id, return ctx->rc; } -grn_rc +GRN_API grn_rc grn_ja_putv(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_obj *vector, int flags) { grn_obj header, footer; @@ -977,7 +977,7 @@ exit : return rc; } -uint32_t +GRN_API uint32_t grn_ja_size(grn_ctx *ctx, grn_ja *ja, grn_id id) { grn_ja_einfo *einfo = NULL, *ei; @@ -1126,7 +1126,7 @@ grn_ja_ref_lzo(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, uint32_t *va } #endif /* NO_LZO */ -void * +GRN_API void * grn_ja_ref(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, uint32_t *value_len) { #ifndef NO_ZLIB Modified: lib/store.h (+8 -5) =================================================================== --- lib/store.h 2012-02-27 16:28:30 +0900 (3f7c07c) +++ lib/store.h 2012-02-27 18:08:59 +0900 (71da31e) @@ -88,23 +88,26 @@ struct _grn_ja { struct grn_ja_header *header; }; -grn_ja *grn_ja_create(grn_ctx *ctx, const char *path, +GRN_API grn_ja *grn_ja_create(grn_ctx *ctx, const char *path, uint32_t max_element_size, uint32_t flags); grn_ja *grn_ja_open(grn_ctx *ctx, const char *path); grn_rc grn_ja_info(grn_ctx *ctx, grn_ja *ja, unsigned int *max_element_size); -grn_rc grn_ja_close(grn_ctx *ctx, grn_ja *ja); +GRN_API grn_rc grn_ja_close(grn_ctx *ctx, grn_ja *ja); grn_rc grn_ja_remove(grn_ctx *ctx, const char *path); grn_rc grn_ja_put(grn_ctx *ctx, grn_ja *ja, grn_id id, void *value, uint32_t value_len, int flags, uint64_t *cas); int grn_ja_at(grn_ctx *ctx, grn_ja *ja, grn_id id, void *valbuf, int buf_size); -void *grn_ja_ref(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, uint32_t *value_len); +GRN_API void *grn_ja_ref(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_io_win *iw, + uint32_t *value_len); grn_obj *grn_ja_get_value(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_obj *value); -grn_rc grn_ja_unref(grn_ctx *ctx, grn_io_win *iw); +GRN_API grn_rc grn_ja_unref(grn_ctx *ctx, grn_io_win *iw); int grn_ja_defrag(grn_ctx *ctx, grn_ja *ja, int threshold); -grn_rc grn_ja_putv(grn_ctx *ctx, grn_ja *ja, grn_id id, grn_obj *vector, int flags); +GRN_API grn_rc grn_ja_putv(grn_ctx *ctx, grn_ja *ja, grn_id id, + grn_obj *vector, int flags); +GRN_API uint32_t grn_ja_size(grn_ctx *ctx, grn_ja *ja, grn_id id); void grn_ja_check(grn_ctx *ctx, grn_ja *ja); Modified: lib/str.c (+2 -2) =================================================================== --- lib/str.c 2012-02-27 16:28:30 +0900 (f6f518c) +++ lib/str.c 2012-02-27 18:08:59 +0900 (9ec0d67) @@ -1523,7 +1523,7 @@ exit : return v; } -void +GRN_API void grn_itoh(unsigned int i, char *p, unsigned int len) { static const char *hex = "0123456789ABCDEF"; @@ -3203,7 +3203,7 @@ grn_text_cgidec(grn_ctx *ctx, grn_obj *buf, const char *p, const char *e, char d return p; } -void +GRN_API void grn_str_url_path_normalize(grn_ctx *ctx, const char *path, size_t path_len, char *buf, size_t buf_len) { Modified: lib/str.h (+4 -3) =================================================================== --- lib/str.h 2012-02-27 16:28:30 +0900 (6bf0ce0) +++ lib/str.h 2012-02-27 18:08:59 +0900 (efbfff5) @@ -66,7 +66,7 @@ GRN_API grn_rc grn_aton(grn_ctx *ctx, const char *p, const char *end, const char GRN_API const char *grn_enctostr(grn_encoding enc); grn_encoding grn_strtoenc(const char *str); -void grn_itoh(unsigned int i, char *p, unsigned int len); +GRN_API void grn_itoh(unsigned int i, char *p, unsigned int len); int grn_str_tok(const char *str, size_t str_len, char delim, const char **tokbuf, int buf_size, const char **rest); GRN_API int grn_str_getopt(int argc, char * const argv[], const grn_str_getopt_opt *opts, int *flags); @@ -112,8 +112,9 @@ GRN_API const char *grn_text_unesc_tok(grn_ctx *ctx, grn_obj *buf, const char *p, const char *e, char *tok_type); -void grn_str_url_path_normalize(grn_ctx *ctx, const char *path, size_t path_len, - char *buf, size_t buf_len); +GRN_API void grn_str_url_path_normalize(grn_ctx *ctx, + const char *path, size_t path_len, + char *buf, size_t buf_len); GRN_API grn_rc grn_text_otoxml(grn_ctx *ctx, grn_obj *bulk, grn_obj *obj, grn_obj_format *format);