Lexical-Types

 view release on metacpan or  search on metacpan

Types.xs  view on Meta::CPAN

 xsh_ck_replace(OP_PADSV,  lt_ck_padsv,  &lt_old_ck_padsv);

 return;
}

static void xsh_user_local_setup(pTHX_ xsh_user_cxt_t *cxt) {
 HV *stash;

 stash = gv_stashpvn(XSH_PACKAGE, XSH_PACKAGE_LEN, 1);
 newCONSTSUB(stash, "LT_THREADSAFE", newSVuv(XSH_THREADSAFE));
 newCONSTSUB(stash, "LT_FORKSAFE",   newSVuv(XSH_FORKSAFE));

 cxt->default_meth = newSVpvn("TYPEDSCALAR", 11);
 SvREADONLY_on(cxt->default_meth);

 return;
}

static void xsh_user_local_teardown(pTHX_ xsh_user_cxt_t *cxt) {
 SvREFCNT_dec(cxt->default_meth);
 cxt->default_meth = NULL;

 return;
}

static void xsh_user_global_teardown(pTHX) {
 xsh_ck_restore(OP_PADANY, &lt_old_ck_padany);
 xsh_ck_restore(OP_PADSV,  &lt_old_ck_padsv);

 ptable_map_free(lt_op_padxv_map);
 lt_op_padxv_map    = NULL;

#if XSH_HAS_PERL(5, 17, 6)
 ptable_map_free(lt_op_padrange_map);
 lt_op_padrange_map = NULL;
#endif

#ifdef USE_ITHREADS
 MUTEX_DESTROY(&lt_op_map_mutex);
#endif

 return;
}

/* --- XS ------------------------------------------------------------------ */

MODULE = Lexical::Types      PACKAGE = Lexical::Types

PROTOTYPES: ENABLE

BOOT:
{
 xsh_setup();
}

#if XSH_THREADSAFE

void
CLONE(...)
PROTOTYPE: DISABLE
PPCODE:
 xsh_clone();
 XSRETURN(0);

#endif

SV *
_tag(SV *code)
PROTOTYPE: $
CODE:
 if (!SvOK(code))
  code = NULL;
 else if (SvROK(code))
  code = SvRV(code);
 RETVAL = xsh_hints_tag(code);
OUTPUT:
 RETVAL



( run in 0.636 second using v1.01-cache-2.11-cpan-5511b514fd6 )