List-Flatten-XS

 view release on metacpan or  search on metacpan

lib/List/Flatten/XS.xs  view on Meta::CPAN

    return sv_2mortal(newRV_inc((SV *)result));
}

MODULE = List::Flatten::XS    PACKAGE = List::Flatten::XS
PROTOTYPES: DISABLE

void *
flatten(ref, svlevel = sv_2mortal(newSViv(-1)))
    SV *ref;
    SV *svlevel;
PPCODE:
{
    if (!SvROK(ref) || SvTYPE(SvRV(ref)) != SVt_PVAV)
        Perl_croak(aTHX_ "Please pass an array reference to the first argument");
    
    IV level = SvIV(svlevel);
    SV *result = (level < 0) ? _fast_flatten(aTHX_ ref)
                    : _flatten_per_level(aTHX_ ref, level);

    if (GIMME_V == G_ARRAY) {
        AV *av_result = (AV *)SvRV(result);



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