The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
MODULE = Panda::XS                PACKAGE = Panda::XS::Test
PROTOTYPES: DISABLE

AV* av_out (bool not_null = false) {
    RETVAL = not_null ? newAV() : NULL;
}

uint64_t av_in (AV* val) {
    RETVAL = (uint64_t)val;
}

HV* hv_out (bool not_null = false) {
    RETVAL = not_null ? newHV() : NULL;
}

uint64_t hv_in (HV* val) {
    RETVAL = (uint64_t)val;
}

IO* io_out (bool not_null = false) {
    if (not_null) {
        GV* gv = gv_fetchpv("STDOUT", 0, SVt_PVIO);
        RETVAL = GvIO(gv);
    }
    else RETVAL = NULL;
}

uint64_t io_in (IO* val) {
    RETVAL = (uint64_t)val;
}

CV* cv_out (bool not_null = false) {
    RETVAL = not_null ? cv : NULL;
}

uint64_t cv_in (CV* val) {
    RETVAL = (uint64_t)val;
}