blob: 95716555dcd2726ad26e6689cd36ef5aa4b0a170 [file] [log] [blame]
/*
* Copyright (C) Igor Sysoev
* Copyright (C) NGINX, Inc.
*/
#ifndef _NJS_REGEXP_PATTERN_H_INCLUDED_
#define _NJS_REGEXP_PATTERN_H_INCLUDED_
typedef enum {
NJS_REGEXP_BYTE = 0,
NJS_REGEXP_UTF8,
} njs_regexp_utf8_t;
typedef struct njs_regexp_group_s njs_regexp_group_t;
struct njs_regexp_pattern_s {
njs_regex_t regex[2];
/*
* A pattern source is used by RegExp.toString() method and
* RegExp.source property. So it is is stored in form "/pattern/flags"
* and as zero-terminated C string but not as value, because retrieving
* it is very seldom operation. To get just a pattern string for
* RegExp.source property a length of flags part "/flags" is stored
* in flags field.
*/
u_char *source;
uint16_t ncaptures;
uint16_t ngroups;
uint8_t flags; /* 2 bits */
uint8_t global; /* 1 bit */
uint8_t ignore_case; /* 1 bit */
uint8_t multiline; /* 1 bit */
njs_regexp_group_t *groups;
};
#endif /* _NJS_REGEXP_PATTERN_H_INCLUDED_ */