void LUCY_RegexTokenizer_Destroy_IMP(lucy_RegexTokenizer *self) { dTHX; lucy_RegexTokenizerIVARS *const ivars = lucy_RegexTokenizer_IVARS(self); CFISH_DECREF(ivars->pattern); ReREFCNT_dec(((REGEXP*)ivars->token_re)); CFISH_SUPER_DESTROY(self, LUCY_REGEXTOKENIZER); }
static void S_set_token_re_but_not_pattern(lucy_RegexTokenizer *self, void *token_re) { #if (PERL_VERSION > 10) REGEXP *rx = SvRX((SV*)token_re); #else MAGIC *magic = NULL; if (SvMAGICAL((SV*)token_re)) { magic = mg_find((SV*)token_re, PERL_MAGIC_qr); } if (!magic) { THROW(LUCY_ERR, "token_re is not a qr// entity"); } REGEXP *rx = (REGEXP*)magic->mg_obj; #endif if (rx == NULL) { THROW(LUCY_ERR, "Failed to extract REGEXP from token_re '%s'", SvPV_nolen((SV*)token_re)); } if (self->token_re) { ReREFCNT_dec(((REGEXP*)self->token_re)); } self->token_re = rx; (void)ReREFCNT_inc(((REGEXP*)self->token_re)); }
void lucy_RegexTokenizer_destroy(lucy_RegexTokenizer *self) { CFISH_DECREF(self->pattern); ReREFCNT_dec(((REGEXP*)self->token_re)); LUCY_SUPER_DESTROY(self, LUCY_REGEXTOKENIZER); }