# ----------------------------------------------------------------------------------------------------------------------------------
# Binary to String Encode/Decode Perl Exports
# ----------------------------------------------------------------------------------------------------------------------------------

MODULE = pgBackRest::LibC PACKAGE = pgBackRest::LibC

####################################################################################################################################
SV *
encodeToStr(encodeType, source)
    int encodeType
    SV *source
CODE:
    RETVAL = NULL;

    STRLEN sourceSize;
    unsigned char *sourcePtr = (unsigned char *)SvPV(source, sourceSize);

    ERROR_XS_BEGIN()
    {
        RETVAL = newSV(encodeToStrSize(encodeType, sourceSize));
        SvPOK_only(RETVAL);

        encodeToStr(encodeType, sourcePtr, sourceSize, (char *)SvPV_nolen(RETVAL));
        SvCUR_set(RETVAL, encodeToStrSize(encodeType, sourceSize));
    }
    ERROR_XS_END();
OUTPUT:
    RETVAL

####################################################################################################################################
SV *
decodeToBin(encodeType, source)
    int encodeType
    const char *source
CODE:
    RETVAL = NULL;

    ERROR_XS_BEGIN()
    {
        RETVAL = newSV(decodeToBinSize(encodeType, source));
        SvPOK_only(RETVAL);

        decodeToBin(encodeType, source, (unsigned char *)SvPV_nolen(RETVAL));
        SvCUR_set(RETVAL, decodeToBinSize(encodeType, source));
    }
    ERROR_XS_END();
OUTPUT:
    RETVAL