| |
| /* |
| * Copyright (C) Igor Sysoev |
| * Copyright (C) NGINX, Inc. |
| */ |
| |
| #ifndef _NJS_REGEX_H_INCLUDED_ |
| #define _NJS_REGEX_H_INCLUDED_ |
| |
| |
| typedef void *(*njs_pcre_malloc_t)(size_t size, void *memory_data); |
| typedef void (*njs_pcre_free_t)(void *p, void *memory_data); |
| |
| |
| typedef struct njs_regex_s njs_regex_t; |
| typedef struct njs_regex_match_data_s njs_regex_match_data_t; |
| |
| |
| typedef struct { |
| njs_pcre_malloc_t private_malloc; |
| njs_pcre_free_t private_free; |
| void *memory_data; |
| njs_trace_t *trace; |
| } njs_regex_context_t; |
| |
| |
| NJS_EXPORT njs_regex_context_t * |
| njs_regex_context_create(njs_pcre_malloc_t private_malloc, |
| njs_pcre_free_t private_free, void *memory_data); |
| NJS_EXPORT njs_int_t njs_regex_compile(njs_regex_t *regex, u_char *source, |
| size_t len, njs_uint_t options, njs_regex_context_t *ctx); |
| NJS_EXPORT njs_bool_t njs_regex_is_valid(njs_regex_t *regex); |
| NJS_EXPORT njs_uint_t njs_regex_ncaptures(njs_regex_t *regex); |
| NJS_EXPORT njs_uint_t njs_regex_backrefs(njs_regex_t *regex); |
| NJS_EXPORT njs_int_t njs_regex_named_captures(njs_regex_t *regex, |
| njs_str_t *name, int n); |
| NJS_EXPORT njs_regex_match_data_t *njs_regex_match_data(njs_regex_t *regex, |
| njs_regex_context_t *ctx); |
| NJS_EXPORT void njs_regex_match_data_free(njs_regex_match_data_t *match_data, |
| njs_regex_context_t *ctx); |
| NJS_EXPORT njs_int_t njs_regex_match(njs_regex_t *regex, const u_char *subject, |
| size_t off, size_t len, njs_regex_match_data_t *match_data, |
| njs_regex_context_t *ctx); |
| NJS_EXPORT int *njs_regex_captures(njs_regex_match_data_t *match_data); |
| |
| |
| #endif /* _NJS_REGEX_H_INCLUDED_ */ |