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);
}
}
}