Object-Pad-SlotAttr-LazyInit

 view release on metacpan or  search on metacpan

lib/Object/Pad/SlotAttr/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_ SlotMeta *slotmeta, SV *value, SV **hookdata_ptr, void *_funcdata)
{
  mop_slot_set_default_sv(slotmeta, newRV_inc(unassigned_val));

  return TRUE;
}

static void lazyinit_post_initslot(pTHX_ SlotMeta *slotmeta, SV *hookdata, void *_funcdata, SV *slot)
{
  SV *weakself = newSVsv(PAD_SVl(PADIX_SELF));
  sv_rvweaken(weakself);

  sv_magicext(slot, weakself, PERL_MAGIC_ext, &vtbl, (char *)hookdata, HEf_SVKEY);

  SvREFCNT_dec(weakself);
}

static const struct SlotHookFuncs lazyinit_hooks = {



( run in 0.585 second using v1.01-cache-2.11-cpan-454fe037f31 )