Object-Pad-FieldAttr-LazyInit
view release on metacpan or search on metacpan
lib/Object/Pad/FieldAttr/LazyInit.xs view on Meta::CPAN
* don't disarm the magic yet
*/
return 1;
/* Now disarm the magic so it won't run again */
mg_freeext(sv, PERL_MAGIC_ext, &vtbl);
return 1;
}
static bool lazyinit_apply(pTHX_ FieldMeta *fieldmeta, SV *value, SV **attrdata_ptr, void *_funcdata)
{
mop_field_set_default_sv(fieldmeta, newRV_inc(unassigned_val));
return TRUE;
}
static void lazyinit_post_makefield(pTHX_ FieldMeta *fieldmeta, SV *attrdata, void *_funcdata, SV *field)
{
SV *weakself = newSVsv(PAD_SVl(PADIX_SELF));
sv_rvweaken(weakself);
sv_magicext(field, weakself, PERL_MAGIC_ext, &vtbl, (char *)attrdata, HEf_SVKEY);
SvREFCNT_dec(weakself);
}
static const struct FieldHookFuncs lazyinit_hooks = {
( run in 0.640 second using v1.01-cache-2.11-cpan-454fe037f31 )