flags = 0;
- pattern = regexp->data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(regexp);
if (pattern->global) {
flags |= NJS_REGEXP_GLOBAL;
regexp = njs_regexp_alloc(vm, pattern);
if (nxt_fast_path(regexp != NULL)) {
- value->data.u.regexp = regexp;
- value->type = NJS_REGEXP;
- value->data.truth = 1;
+ njs_set_regexp(value, regexp);
return NXT_OK;
}
njs_release(vm, value);
- regexp = value->data.u.regexp;
+ regexp = njs_regexp(value);
(void) njs_string_prop(&string, ®exp->string);
{
njs_regexp_pattern_t *pattern;
- pattern = value->data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(value);
*retval = pattern->global ? njs_value_true : njs_value_false;
njs_release(vm, value);
{
njs_regexp_pattern_t *pattern;
- pattern = value->data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(value);
*retval = pattern->ignore_case ? njs_value_true : njs_value_false;
njs_release(vm, value);
{
njs_regexp_pattern_t *pattern;
- pattern = value->data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(value);
*retval = pattern->multiline ? njs_value_true : njs_value_false;
njs_release(vm, value);
uint32_t size;
njs_regexp_pattern_t *pattern;
- pattern = value->data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(value);
/* Skip starting "/". */
source = pattern->source + 1;
uint32_t size;
njs_regexp_pattern_t *pattern;
- pattern = value->data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(value);
source = pattern->source;
size = nxt_strlen(source);
n = (string.length != 0);
- pattern = args[0].data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(&args[0]);
if (nxt_regex_is_valid(&pattern->regex[n])) {
ret = njs_regexp_match(vm, &pattern->regex[n], string.start,
value = &njs_string_undefined;
}
- regexp = args[0].data.u.regexp;
+ regexp = njs_regexp(&args[0]);
regexp->string = *value;
(void) njs_string_prop(&string, value);
switch (args[1].type) {
case NJS_REGEXP:
- pattern = args[1].data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(&args[1]);
break;
case NJS_STRING:
if (nargs > 1) {
if (njs_is_regexp(&args[1])) {
- pattern = args[1].data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(&args[1]);
if (pattern->global) {
return njs_string_match_multiple(vm, args, pattern);
goto done;
case NJS_REGEXP:
- pattern = args[1].data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(&args[1]);
if (!nxt_regex_is_valid(&pattern->regex[type])) {
goto single;
}
if (njs_is_regexp(&args[1])) {
- regex = &args[1].data.u.regexp->pattern->regex[r->type];
+ regex = &njs_regexp_pattern(&args[1])->regex[r->type];
if (!nxt_regex_is_valid(regex)) {
goto original;
njs_regexp_pattern_t *pattern;
njs_string_replace_part_t replace;
- pattern = args[1].data.u.regexp->pattern;
+ pattern = njs_regexp_pattern(&args[1]);
end = r->part[0].start + r->part[0].size;
replace = r->part[1];
if (njs_is_string(&r->retval)) {
njs_string_replacement_copy(&r->part[r->empty ? 0 : 1], &r->retval);
- if (args[1].data.u.regexp->pattern->global) {
+ if (njs_regexp_pattern(&args[1])->global) {
r->part += 2;
if (r->part[0].start > (string.start + string.size)) {
((value)->data.u.date)
+#define njs_regexp(value) \
+ ((value)->data.u.regexp)
+
+
+#define njs_regexp_pattern(value) \
+ ((value)->data.u.regexp->pattern)
+
+
#define njs_object_value(_value) \
(&(_value)->data.u.object_value->value)
}
+nxt_inline void
+njs_set_regexp(njs_value_t *value, njs_regexp_t *regexp)
+{
+ value->data.u.regexp = regexp;
+ value->type = NJS_REGEXP;
+ value->data.truth = 1;
+}
+
+
nxt_inline void
njs_set_object_value(njs_value_t *value, njs_object_value_t *object_value)
{
regexp = njs_regexp_alloc(vm, code->pattern);
if (nxt_fast_path(regexp != NULL)) {
- vm->retval.data.u.regexp = regexp;
- vm->retval.type = NJS_REGEXP;
- vm->retval.data.truth = 1;
+ njs_set_regexp(&vm->retval, regexp);
return sizeof(njs_vmcode_regexp_t);
}