Algorithm-FastPermute

 view release on metacpan or  search on metacpan

FastPermute.xs  view on Meta::CPAN

permute(callback_sv, array_sv)
SV* callback_sv;
SV* array_sv;
  PROTOTYPE: &\@
  PREINIT:
    dMULTICALL;
    I32           gimme = G_VOID;  /* We call our callback in VOID context */
    bool          old_catch;
    struct afp_cache *c;
    I32           x;
  PPCODE:
    if (!SvROK(callback_sv) || SvTYPE(SvRV(callback_sv)) != SVt_PVCV)
        Perl_croak(aTHX_ "Callback is not a CODE reference");
    if (!SvROK(array_sv)    || SvTYPE(SvRV(array_sv))    != SVt_PVAV)
        Perl_croak(aTHX_ "Array is not an ARRAY reference");
    
    c = malloc(sizeof(struct afp_cache));
    cv = (CV*)SvRV(callback_sv);
    c->array = (AV*)SvRV(array_sv);
    c->len   = 1 + av_len(c->array);
    



( run in 1.114 second using v1.01-cache-2.11-cpan-71847e10f99 )