typedef struct reh_action {
struct reh_action *next;
- reh_comp_hook comp;
- reh_exec_hook exec;
+ reh_config cbs;
const char *key;
STRLEN klen;
} reh_action;
#endif /* USE_ITHREADS */
#undef reh_register
-void reh_register(pTHX_ const char *key, reh_comp_hook comp, reh_exec_hook exec) {
+void reh_register(pTHX_ const char *key, reh_config *cfg) {
reh_action *a;
char *key_dup;
STRLEN i, len;
key_dup[len] = '\0';
a = PerlMemShared_malloc(sizeof *a);
- a->comp = comp;
- a->exec = exec;
+ a->cbs = *cfg;
a->key = key_dup;
a->klen = len;
REH_UNLOCK(&reh_action_list_mutex);
for (; a; a = a->next) {
- if (a->comp) {
+ if (a->cbs.comp) {
char *p = strstr(keys, a->key);
if (p && (p + a->klen <= keys + len) && p[a->klen] == ' ')
- a->comp(aTHX_ rx, node);
+ a->cbs.comp(aTHX_ rx, node);
}
}
}
REH_UNLOCK(&reh_action_list_mutex);
for (; a; a = a->next) {
- if (a->exec) {
+ if (a->cbs.exec) {
char *p = strstr(keys, a->key);
if (p && (p + a->klen <= keys + len) && p[a->klen] == ' ')
- a->exec(aTHX_ rx, node, reginfo, st);
+ a->cbs.exec(aTHX_ rx, node, reginfo, st);
}
}
}
return RX;
}
-const struct regexp_engine reh_regexp_engine = {
- reh_re_compile,
- reh_regexec,
- reh_re_intuit_start,
- reh_re_intuit_string,
- reh_regfree,
+const struct regexp_engine reh_regexp_engine = {
+ reh_re_compile,
+ reh_regexec,
+ reh_re_intuit_start,
+ reh_re_intuit_string,
+ reh_regfree,
reh_reg_numbered_buff_fetch,
reh_reg_numbered_buff_store,
reh_reg_numbered_buff_length,
reh_reg_named_buff_iter,
reh_reg_qr_package,
#if defined(USE_ITHREADS)
- reh_regdupe
+ reh_regdupe
#endif
};