-Plugin_named_buff_FETCH(pTHX_ REGEXP * const rx, SV * const key, U32 flags)
-{
- dSP;
- SV * callback;
- GET_SELF_FROM_PPRIVATE(rx->pprivate);
-
- callback = self->cb_named_capture_buff_FETCH;
-
- if (callback) {
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- XPUSHs(rx->pprivate);
- XPUSHs(SvREFCNT_inc(key));
- XPUSHs(sv_2mortal(newSViv(flags & 1 ? 1 : 0)));
- PUTBACK;
-
- call_sv(callback, G_SCALAR);
-
- SPAGAIN;
-
- SV* ret = POPs;
- SvREFCNT_inc(ret);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- return ret;
- } else {
- return NULL;
- }
-}
-
-void
-Plugin_named_buff_STORE(pTHX_ REGEXP * const rx, SV * const key,
- SV * const value, const U32 flags)
-{
- dSP;
- SV * callback;
- GET_SELF_FROM_PPRIVATE(rx->pprivate);
-
- callback = self->cb_named_capture_buff_STORE;
-
- if (callback) {
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- XPUSHs(rx->pprivate);
- XPUSHs(SvREFCNT_inc(key));
- XPUSHs(SvREFCNT_inc(value));
- XPUSHs(sv_2mortal(newSViv(flags)));
- PUTBACK;
-
- call_sv(callback, G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
- }
-}
-
-void
-Plugin_named_buff_DELETE(pTHX_ REGEXP * const rx, SV * const key, const U32 flags)
-{
- dSP;
- SV * callback;
- GET_SELF_FROM_PPRIVATE(rx->pprivate);
-
- callback = self->cb_named_capture_buff_DELETE;
-
- if (callback) {
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- XPUSHs(rx->pprivate);
- XPUSHs(SvREFCNT_inc(key));
- XPUSHs(sv_2mortal(newSViv(flags)));
- PUTBACK;
-
- call_sv(callback, G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
- }
-}
-
-void
-Plugin_named_buff_CLEAR(pTHX_ REGEXP * const rx, const U32 flags)
-{
- dSP;
- SV * callback;
- GET_SELF_FROM_PPRIVATE(rx->pprivate);
-
- callback = self->cb_named_capture_buff_CLEAR;
-
- if (callback) {
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- XPUSHs(rx->pprivate);
- XPUSHs(sv_2mortal(newSViv(flags)));
- PUTBACK;
-
- call_sv(callback, G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
- }
-}
-
-bool
-Plugin_named_buff_EXISTS(pTHX_ REGEXP * const rx, SV * const key,
- const U32 flags)
-{
- dSP;
- SV * callback;
- bool truthiness = FALSE;
- GET_SELF_FROM_PPRIVATE(rx->pprivate);
-
- callback = self->cb_named_capture_buff_EXISTS;
-
- if (callback) {
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- XPUSHs(rx->pprivate);
- XPUSHs(SvREFCNT_inc(key));
- XPUSHs(sv_2mortal(newSViv(flags)));
- PUTBACK;
-
- call_sv(callback, G_SCALAR);
-
- SPAGAIN;
-
- SV * ret = POPs;
- truthiness = SvTRUE(ret);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
- }
-
- return truthiness;
-}
-
-SV*
-Plugin_named_buff_FIRSTKEY(pTHX_ REGEXP * const rx, const U32 flags)
-{
- dSP;
- SV * callback;
- GET_SELF_FROM_PPRIVATE(rx->pprivate);
-
- callback = self->cb_named_capture_buff_FIRSTKEY;
-
- if (callback) {
- ENTER;
- SAVETMPS;
-
- PUSHMARK(SP);
- XPUSHs(rx->pprivate);
- XPUSHs(sv_2mortal(newSViv(flags)));
- PUTBACK;
-
- call_sv(callback, G_SCALAR);
-
- SPAGAIN;
-
- SV * ret = POPs;
- SvREFCNT_inc(ret);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- return ret;
- } else {
- return NULL;
- }
-}
-
-SV*
-Plugin_named_buff_NEXTKEY(pTHX_ REGEXP * const rx, SV * const lastkey,
- const U32 flags)