REXEC_FBC_UTF8_CLASS_SCAN(
reginclass(prog, c, (U8*)s, (U8*) strend, utf8_target));
}
+ else if (ANYOF_FLAGS(c)) {
+ REXEC_FBC_CLASS_SCAN(reginclass(prog,c, (U8*)s, (U8*)s+1, 0));
+ }
else {
- REXEC_FBC_CLASS_SCAN(REGINCLASS(prog, c, (U8*)s, 0));
+ REXEC_FBC_CLASS_SCAN(ANYOF_BITMAP_TEST(c, *((U8*)s)));
}
break;
scan += UTF8SKIP(scan);
hardcount++;
}
- } else {
- while (scan < loceol && REGINCLASS(prog, p, (U8*)scan, 0))
+ }
+ else if (ANYOF_FLAGS(p)) {
+ while (scan < loceol
+ && reginclass(prog, p, (U8*)scan, (U8*)scan+1, 0))
+ scan++;
+ }
+ else {
+ while (scan < loceol && ANYOF_BITMAP_TEST(p, *((U8*)scan)))
scan++;
}
break;
setup => 'my $i = 0;',
code => 'while (++$i % 4) {}',
},
+
+
+ 'regex::anyof_plus::anchored' => {
+ desc => '/^[acgt]+/',
+ setup => '$_ = "a" x 100;',
+ code => '/^[acgt]+/',
+ },
+ 'regex::anyof_plus::floating' => {
+ desc => '/[acgt]+where match starts at position 0 for 100 chars/',
+ setup => '$_ = "a" x 100;',
+ code => '/[acgt]+/',
+ },
+ 'regex::anyof_plus::floating_away' => {
+ desc => '/[acgt]+/ where match starts at position 100 for 100 chars',
+ setup => '$_ = ("0" x 100) . ("a" x 100);',
+ code => '/[acgt]+/',
+ },
];