⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlib.xs

📁 source of perl for linux application,
💻 XS
📖 第 1 页 / 共 4 页
字号:
    CODE:        RETVAL = s->uncompressedBytes;  OUTPUT:	RETVALDualType inflateSync (s, buf)    Compress::Raw::Zlib::inflateStream	s    SV *	buf  CODE:      /* If the buffer is a reference, dereference it */    buf = deRef(buf, "inflateSync") ;#ifdef UTF8_AVAILABLE        if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))         croak("Wide character in Compress::Raw::Zlib::Inflate::inflateSync");#endif                 /* initialise the input buffer */    s->stream.next_in = (Bytef*)SvPVbyte_nolen(buf) ;    s->stream.avail_in = SvCUR(buf) ;	    /* inflateSync doesn't create any output */    s->stream.next_out = (Bytef*) NULL;    s->stream.avail_out = 0;    RETVAL = inflateSync(&(s->stream));    s->last_error = RETVAL ;    /* fix the input buffer */    {	unsigned in = s->stream.avail_in ; 	SvCUR_set(buf, in) ; 	if (in)     	    Move(s->stream.next_in, SvPVbyte_nolen(buf), in, char) ;	        *SvEND(buf) = '\0';        SvSETMAGIC(buf);    }    OUTPUT:	RETVALvoidDESTROY(s)    Compress::Raw::Zlib::inflateStream	s  CODE:    inflateEnd(&s->stream) ;    if (s->dictionary)	SvREFCNT_dec(s->dictionary) ;#ifndef SETP_BYTE    if (s->deflateParams_out_buffer)        Safefree(s->deflateParams_out_buffer);#endif#ifdef MAGIC_APPEND    if (s->window)        Safefree(s->window);#endif    Safefree(s) ;uLongstatus(s)        Compress::Raw::Zlib::inflateStream   s    CODE:	RETVAL = s->last_error ;    OUTPUT:	RETVALuLongcrc32(s)        Compress::Raw::Zlib::inflateStream   s    CODE:	RETVAL = s->crc32 ;    OUTPUT:	RETVALuLongdict_adler(s)        Compress::Raw::Zlib::inflateStream   s    CODE:	RETVAL = s->dict_adler ;    OUTPUT:	RETVALuLongtotal_in(s)        Compress::Raw::Zlib::inflateStream   s    CODE:        RETVAL = s->stream.total_in ;    OUTPUT:	RETVALuLongadler32(s)        Compress::Raw::Zlib::inflateStream   s    CODE:	RETVAL = s->adler32 ;    OUTPUT:	RETVALuLongtotal_out(s)        Compress::Raw::Zlib::inflateStream   s    CODE:        RETVAL = s->stream.total_out ;    OUTPUT:	RETVALchar*msg(s)	Compress::Raw::Zlib::inflateStream   s    CODE:	RETVAL = s->stream.msg;    OUTPUT:	RETVALuLongget_Bufsize(s)        Compress::Raw::Zlib::inflateStream   s    CODE:	RETVAL = s->bufsize ;    OUTPUT:	RETVALboolset_Append(s, mode)        Compress::Raw::Zlib::inflateStream   s	bool	mode    CODE:        RETVAL = ((s->flags & FLAG_APPEND) == FLAG_APPEND);	if (mode)	    s->flags |= FLAG_APPEND ;	else	    s->flags &= ~FLAG_APPEND ;    OUTPUT:        RETVALMODULE = Compress::Raw::Zlib PACKAGE = Compress::Raw::Zlib::inflateScanStreamvoidDESTROY(s)    Compress::Raw::Zlib::inflateScanStream	s  CODE:    inflateEnd(&s->stream) ;    if (s->dictionary)	SvREFCNT_dec(s->dictionary) ;#ifndef SETP_BYTE    if (s->deflateParams_out_buffer)        Safefree(s->deflateParams_out_buffer);#endif#ifdef MAGIC_APPEND    if (s->window)        Safefree(s->window);#endif    Safefree(s) ;voidDispStream(s, message=NULL)    Compress::Raw::Zlib::inflateScanStream   s    char *  messageDualTypeinflateReset(s)    Compress::Raw::Zlib::inflateScanStream   s  CODE:      RETVAL = inflateReset(&(s->stream)) ;      if (RETVAL == Z_OK) {	  PostInitStream(s, s->flags, s->bufsize, s->WindowBits) ;      }    OUTPUT:      RETVALDualType scan(s, buf, out=NULL, eof=FALSE)    Compress::Raw::Zlib::inflateScanStream	s    SV *	buf    SV *	out    bool	eof    bool	eof_mode = FALSE;    int    start_len = NO_INIT    STRLEN stmp      = NO_INIT  CODE:    /* If the input buffer is a reference, dereference it */#ifndef MAGIC_APPEND        buf = buf;        croak("scan needs zlib 1.2.1 or better");#else    buf = deRef(buf, "inflateScan") ;#ifdef UTF8_AVAILABLE        if (DO_UTF8(buf) && !sv_utf8_downgrade(buf, 1))        croak("Wide character in Compress::Raw::Zlib::InflateScan::scan input parameter");#endif             /* initialise the input buffer */    s->stream.next_in = (Bytef*)SvPVbyte_force(buf, stmp) ;    s->stream.avail_in = SvCUR(buf) ;    start_len = s->stream.avail_in ;    s->bytesInflated = 0 ;     do    {        if (s->stream.avail_in == 0) {            RETVAL = Z_OK ;            break ;        }        /* set up output to next available section of sliding window */        s->stream.avail_out = WINDOW_SIZE - s->window_have;        s->stream.next_out = s->window + s->window_have;        /* DispStream(s, "before inflate\n"); */        /* inflate and check for errors */        RETVAL = inflate(&(s->stream), Z_BLOCK);        if (start_len > 1 && ! eof_mode)            s->window_lastByte = *(s->stream.next_in - 1 ) ;        if (RETVAL == Z_STREAM_ERROR || RETVAL == Z_MEM_ERROR ||            RETVAL == Z_DATA_ERROR )            break ;        if (s->flags & FLAG_CRC32 )            s->crc32 = crc32(s->crc32, s->window + s->window_have,                              WINDOW_SIZE - s->window_have - s->stream.avail_out);        if (s->flags & FLAG_ADLER32)             s->adler32 = adler32(s->adler32, s->window + s->window_have,                                  WINDOW_SIZE - s->window_have - s->stream.avail_out);        s->uncompressedBytes =        s->bytesInflated += WINDOW_SIZE - s->window_have - s->stream.avail_out;        if (s->stream.avail_out)            s->window_have = WINDOW_SIZE - s->stream.avail_out;        else {            s->window_have = 0;            s->window_full = 1;        }        /* process end of block */        if (s->stream.data_type & 128) {            if (s->stream.data_type & 64) {                s->window_left = s->stream.data_type & 0x1f;            }            else {                s->window_lastbit = s->stream.data_type & 0x1f;                s->lastBlockOffset = s->stream.total_in;            }        }    } while (RETVAL != Z_STREAM_END);    s->last_error = RETVAL ;    s->window_lastoff = s->stream.total_in ;    s->compressedBytes += SvCUR(buf) - s->stream.avail_in  ;    if (RETVAL == Z_STREAM_END)    {        s->matchedEndBlock = 1 ;        /* save the location of the end of the compressed data */        s->window_end = SvCUR(buf) - s->stream.avail_in - 1 ;        s->window_endOffset = s->stream.total_in ;        if (s->window_left)        {            -- s->window_endOffset ;        }        /* if window wrapped, build dictionary from window by rotating */        if (s->window_full) {            rotate(s->window, WINDOW_SIZE, s->window_have);            s->window_have = WINDOW_SIZE;        }        /* if (s->flags & FLAG_CONSUME_INPUT) { */        if (1) {            unsigned in = s->stream.avail_in ;            SvCUR_set(buf, in) ;            if (in)                Move(s->stream.next_in, SvPVbyte_nolen(buf), in, char) ;	                *SvEND(buf) = '\0';                SvSETMAGIC(buf);        }    }#endif  OUTPUT:	RETVALuLonggetEndOffset(s)    Compress::Raw::Zlib::inflateScanStream	s    CODE:#ifndef MAGIC_APPEND        croak("getEndOffset needs zlib 1.2.1 or better");#else        RETVAL = s->window_endOffset;#endif  OUTPUT:	RETVALuLonginflateCount(s)    Compress::Raw::Zlib::inflateScanStream	s    CODE:#ifndef MAGIC_APPEND        croak("inflateCount needs zlib 1.2.1 or better");#else        RETVAL = s->bytesInflated;#endif  OUTPUT:	RETVALuLongcompressedBytes(s)    Compress::Raw::Zlib::inflateScanStream	s    CODE:        RETVAL = s->compressedBytes;  OUTPUT:	RETVALuLonguncompressedBytes(s)    Compress::Raw::Zlib::inflateScanStream	s    CODE:        RETVAL = s->uncompressedBytes;  OUTPUT:	RETVALuLonggetLastBlockOffset(s)    Compress::Raw::Zlib::inflateScanStream	s    CODE:#ifndef MAGIC_APPEND        croak("getLastBlockOffset needs zlib 1.2.1 or better");#else        RETVAL = s->lastBlockOffset - (s->window_lastbit != 0);#endif  OUTPUT:	RETVALuLonggetLastBufferOffset(s)    Compress::Raw::Zlib::inflateScanStream	s    CODE:#ifndef MAGIC_APPEND        croak("getLastBufferOffset needs zlib 1.2.1 or better");#else        RETVAL = s->window_lastoff;#endif  OUTPUT:	RETVALvoidresetLastBlockByte(s, byte)    Compress::Raw::Zlib::inflateScanStream	s    unsigned char*                      byte    CODE:#ifndef MAGIC_APPEND        croak("resetLastBlockByte needs zlib 1.2.1 or better");#else        if (byte != NULL)            *byte = *byte ^ (1 << ((8 - s->window_lastbit) & 7));#endifvoid_createDeflateStream(inf_s, flags,level, method, windowBits, memLevel, strategy, bufsize)    Compress::Raw::Zlib::inflateScanStream	inf_s    int flags    int	level    int method    int windowBits    int memLevel    int strategy    uLong bufsize  PPCODE:  {#ifndef MAGIC_APPEND        flags = flags;        level = level ;        method = method;        windowBits = windowBits;        memLevel = memLevel;        strategy = strategy;        bufsize= bufsize;        croak("_createDeflateStream needs zlib 1.2.1 or better");#else    int err ;    deflateStream s ;    if (trace)        warn("in _createDeflateStream(level=%d, method=%d, windowBits=%d, memLevel=%d, strategy=%d, bufsize=%lu\n",	level, method, windowBits, memLevel, strategy, bufsize) ;    if ((s = InitStream() )) {        s->Level      = level;        s->Method     = method;        s->WindowBits = windowBits;        s->MemLevel   = memLevel;        s->Strategy   = strategy;        err = deflateInit2(&(s->stream), level, 			   method, windowBits, memLevel, strategy);	if (err == Z_OK) {	    err = deflateSetDictionary(&(s->stream), inf_s->window, inf_s->window_have);	    s->dict_adler = s->stream.adler ;	}        if (err != Z_OK) {            Safefree(s) ;            s = NULL ;	}	else {	    PostInitStream(s, flags, bufsize, windowBits) ;            s->crc32            = inf_s->crc32;            s->adler32          = inf_s->adler32;            s->stream.adler     = inf_s->stream.adler ;            /* s->stream.total_out = inf_s->bytesInflated ; */            s->stream.total_in  = inf_s->stream.total_out ;            if (inf_s->window_left) {                /* printf("** window_left %d, window_lastByte %d\n", inf_s->window_left, inf_s->window_lastByte); */                deflatePrime(&(s->stream), 8 - inf_s->window_left, inf_s->window_lastByte);            }        }    }    else        err = Z_MEM_ERROR ;    XPUSHs(sv_setref_pv(sv_newmortal(),             "Compress::Raw::Zlib::deflateStream", (void*)s));    if (GIMME == G_ARRAY) {        SV * sv = sv_2mortal(newSViv(err)) ;        setDUALstatus(sv, err);        XPUSHs(sv) ;    }#endif  }DualTypestatus(s)        Compress::Raw::Zlib::inflateScanStream   s    CODE:	RETVAL = s->last_error ;    OUTPUT:	RETVALuLongcrc32(s)        Compress::Raw::Zlib::inflateScanStream   s    CODE:	RETVAL = s->crc32 ;    OUTPUT:	RETVALuLongadler32(s)        Compress::Raw::Zlib::inflateScanStream   s    CODE:	RETVAL = s->adler32 ;    OUTPUT:	RETVAL

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -