亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cm.cpp

?? cm 壓縮算法的源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
{  unsigned char carry = enlow >> CODE_BITS;
   unsigned char tmp = enbuffer + carry;
   WriteOutputFile( tmp );
   carry += 0xff;                         /* carry = carry? 0x00 : 0xff    */
   while (bytes_to_follow) {
      WriteOutputFile( carry );
      bytes_to_follow --;
   }
}


/* START ENCODING A STREAM OF SYMBOLS. c preceeds the coded message and is */
/* returned by start_decoding                                              */
void start_encoding( char c )
{  enlow = 0;                                 /* Full code range.          */
   enrange = Top_value;
   enbuffer = c;                              /* byte to output first      */
   bytes_to_follow = 0;                       /* No bytes to follow        */
}


/* START DECODING A STREAM OF SYMBOLS. returns the char passed to          */
/* start_encoding() or EOF                                                 */
int start_decoding( void )
{  int c = ReadInputFile();
   debuffer = ReadInputFile();
   deoffs = debuffer >> (8-EXTRA_BITS);
   derange = 1 << EXTRA_BITS;
   return c;
}


/* Encode a symbol */
inline void encode_freq(
    unsigned int sy_f,    /* frequency of symbol */
    unsigned int lt_f,    /* frequency of symbols < the decoded symbol */
    unsigned int tot_f)   /* frequency of all symbols */
{  code_value r, tmp;
   r = enrange / tot_f;   /* consider replacing this / by >> if tot_f is */
                          /* a power of two                              */
   tmp = r * lt_f;
   enlow += tmp;
   if (lt_f+sy_f < tot_f) /* consider doing the old CACM style coding    */
                          /* if tot_f is a power of 2 to avoid this if   */
      enrange = r * sy_f;
   else
      enrange -= tmp;
   while (enrange <= Bottom_value) {   /* this while can be unrolled if  */
                                       /* sy_f/tot_f > 1/256             */
      unsigned char byte = enlow >> SHIFT_BITS;
      if (byte == 0xff) {
#ifdef NOWARN
         bytes_to_follow ++;
#else
         if (bytes_to_follow++ == 0xffffffffL) {
            fprintf(stderr,"Too many bytes outstanding - File too large\n");
            exit(1);
         }
#endif
      } else {
         outbyte();
         enbuffer = byte;
      }
      enlow = (enlow << 8) & (Top_value-1);
      enrange <<= 8;
   }
}


/* Calculate culmulative frequency for next symbol. Does NO update!        */
inline unsigned int decode_culfreq( unsigned int tot_f )
{  unsigned int tmp;
   while (derange <= Bottom_value) {
      deoffs = (deoffs<<8) | ((debuffer<<EXTRA_BITS)&0xff);
      debuffer = ReadInputFile();
      deoffs |= debuffer >> (8-EXTRA_BITS);
      derange <<= 8;
   }
   der = derange/tot_f;
   tmp = deoffs/der;
   return (tmp>=tot_f ? tot_f-1 : tmp);
}
/* the considerations about / versus >> and if versus 2 operations written */
/* as comments in encode_freq have influence on the decoding routines too! */


/* Update decoding variables */
inline void decode_update(
    unsigned int sy_f,    /* frequency of symbol */
    unsigned int lt_f,    /* frequency of symbols < the decoded symbol */
    unsigned int tot_f)   /* frequency of all symbols */
{  code_value tmp;
   tmp = der * lt_f;
   deoffs -= tmp;
   if (lt_f + sy_f < tot_f)
     derange = der * sy_f;
   else
     derange -= tmp;
}


/* FINISH ENCODING THE STREAM. */
void done_encoding( void )
{  enlow += enrange >> 1;                      /* select middle of interval*/
   outbyte();                                  /* output outstanding bytes */
   WriteOutputFile( (char)(enbuffer>>SHIFT_BITS) );
   WriteOutputFile( (char)(enbuffer>>(SHIFT_BITS-8)) );
}


/* FINISH DECODING THE STREAM. */
void done_decoding( void )
{
}

#else

#define start_encoding(c)                   void(0)
#define encode_freq( sy_f, lt_f, tot_f )    outfile.WriteInt( lt_f )
#define done_encoding()                     void(0)
#define start_decoding()                    void(0)
#define decode_culfreq( tot_f )             infile.ReadInt()
#define decode_update( sy_f, lt_f, tot_f )  void(0)
#define done_decoding()                     void(0)

#endif

/*
        Determine integer value of base 2 logarithm of integer value
        Use smallest power of two less than input value
*/

static int log2 (unsigned n)

{
        int i;

        for (i = 0; n > 1; i ++, n >>= 1);
        return i;
}




// Arith section ***********************************************************

struct Arith {
    static uint ints, chars, codes, emptycodes, escapes, first_escapes, zeroes, ones;

#ifdef PRINT_STATS
    static void ClearCnts()         { ints=chars=codes=emptycodes=escapes=first_escapes=zeroes=ones=0; }
    static void intspp()            { ints++;  }
    static void charspp()           { chars++; }
    static void codespp()           { codes++; }
    static void emptycodespp()      { emptycodes++; }
    static void escapespp()         { escapes++; }
    static void first_escapespp()   { first_escapes++; }
    static void zeroespp()          { zeroes++; }
    static void onespp()            { ones++; }
#else
    static void ClearCnts()         {}
    static void intspp()            {}
    static void charspp()           {}
    static void codespp()           {}
    static void emptycodespp()      {}
    static void escapespp()         {}
    static void first_escapespp()   {}
    static void zeroespp()          {}
    static void onespp()            {}
#endif

    static void  init();
    static void  done();
    static void  Encode(uint base,uint count,uint range);
    static void  EncodeEscape(uint base,uint count,uint range);
    static void  Encode1(uint base,uint range);
    static void  Encode256(uint n);
    static void  EncodeChar(uchar c);
    static void  EncodeInt(uint n);
    static uint  Decode256();
    static uchar DecodeChar();
    static uint  DecodeInt();
    static uint  Decode(uint range);
    static void  Update(uint base,uint count,uint range);
    static uint  Decode1(uint range);

} dummyArith;
uint Arith::ints=0, Arith::chars=0, Arith::codes=0,
     Arith::emptycodes=0, Arith::escapes=0, Arith::first_escapes=0,
     Arith::zeroes=0, Arith::ones=0;

INLINE void Arith::init() {
    CodedBytes=0;
    test_command( start_encoding(0), (void)start_decoding() );
}

INLINE void Arith::done() {
    test_command( done_encoding(), done_decoding() );
}

inline void Arith::Encode( uint base, uint count, uint range ) {
#ifdef ARITH_PRINT
    printf( " %u %u %u\n", base, count, range );
#endif

    codespp();
#ifdef DEBUG
    if(!( range>0 && range<MIN_RANGE && count>0 && base+count<=range )) {
        debug_printf(( " %u %u %u\n", base, count, range ));
        assert(0);
    }
#endif
    encode_freq( count, base, range );
    if( count==range ) {
        emptycodespp();
    }
}

inline void Arith::EncodeEscape( uint base, uint count, uint range ) {
    escapespp();
    Encode( base, count, range );
}

inline void Arith::Encode1( uint base, uint range ) {
    Encode( base, 1, range );
}

inline void Arith::Encode256( uint n ) {
    assert( n<=255 );
    if( n==0 ) {
        zeroespp();
    } else if( n==1 ) {
        onespp();
    }
    Encode1( n, 256 );
}

inline void Arith::EncodeChar( uchar c ) {
    charspp();
    Encode256(c);
}

INLINE void Arith::EncodeInt( uint n ) {
    intspp();
    if( n<254 ) {
        Encode256(n);
    } else if( n<=65535u ) {
        Encode256(254);
        Encode256(n&255);
        Encode256(n>>8);
    } else {
        uchar *p=(uchar*)&n;
        uint  i=sizeof(n);

        Encode256(255);
        do {
            Encode256(*p++);
        } while( --i );
    }
}

inline uint Arith::Decode( uint range ) {
    assert( range<MIN_RANGE );
    return decode_culfreq(range);
}

inline void Arith::Update( uint base, uint count, uint range ) {
#ifdef ARITH_PRINT
    printf( " %u %u %u\n", base, count, range );
#endif

    assert( range>0 && range<MIN_RANGE && count>0 && base+count<=range );
    decode_update( count, base, range );
}

inline uint Arith::Decode1( uint range ) {
    uint n = Decode(range);
    Update( n, 1, range );
    return n;
}

inline uint Arith::Decode256() {
    return Decode1(256);
}

inline uchar Arith::DecodeChar() {
    charspp();
    return Decode256();
}

INLINE uint Arith::DecodeInt() {
    intspp();

    uint n = Decode256();
    if( n==254 ) {
        n = Decode256();
        n += Decode256()<<8;
    } else if( n==255 ) {
        uchar *p=(uchar*)&n;
        uint  i=sizeof(n);

        do {
            *p++ = Decode256();
        } while( --i );
    }
    return n;
}



// Context tree structures section *****************************************

struct FreeMem {
    static uchar *table, *ptr;
    static uint size;
    static void init() {
        table=new uchar[size];
        if( table==0 ) {
            error( M_NOTREE );
        }
    }
    static void clear() {
        ptr=table+size;
    }
    static void* alloc(size_t bytes) {
        if( ptr-table < bytes ) {
            error(M_NOMEMORY);
        }
        return (void*)(ptr-=bytes);
    }
    static void done() {
    }
} dummyFreeMem;
uchar *FreeMem::table=0, *FreeMem::ptr=0;
uint FreeMem::size=0;

struct allocator {
    void* operator new(size_t bytes) {
        return FreeMem::alloc(bytes);
    }
    void operator delete(void*) {}
};

struct context;

struct node : allocator {
    static uint cnt, origcnt;
    uint count, base;
    node *next;
    context *hint;
    uchar c;

#ifdef TEST_TREE
    void Test(uint level);
#endif

#if defined(DEBUG) || defined(PRINT_STATS)
    static void cntpp() { cnt++; }
    static void cntmm() { cnt--; }
#else
    static void cntpp() {}
    static void cntmm() {}
#endif

    node( uchar new_c, uint new_count ) {
        c=new_c;
        count=new_count;
        next=0;
        hint=0;
        cntpp();
    }
    node( uchar new_c, uint new_base, uint new_count ) {
        c=new_c;
        base=new_base;
        count=new_count;
        next=0;
        hint=0;
        cntpp();
    }
    void AddCount( uint new_count ) {
        // 忇

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美久久久久中文字幕| 成人小视频在线| 91.成人天堂一区| 久久激情综合网| 精品va天堂亚洲国产| 国内外精品视频| 国产精品国产三级国产普通话99| av一区二区三区黑人| 一区二区三区在线影院| 欧美性生活影院| 韩国精品久久久| 亚洲人成网站影音先锋播放| 欧美中文字幕久久| 久久国产尿小便嘘嘘尿| 国产欧美日韩视频一区二区| 一本一道波多野结衣一区二区| 一区二区三区丝袜| 精品少妇一区二区三区日产乱码| 东方aⅴ免费观看久久av| 伊人开心综合网| 日韩精品自拍偷拍| 91在线国内视频| 老司机免费视频一区二区三区| 中文字幕av一区二区三区高| 欧美无砖专区一中文字| 国产精品18久久久久久久网站| 亚洲精品水蜜桃| 日韩女优毛片在线| 91蝌蚪porny九色| 美女视频网站黄色亚洲| 成人欧美一区二区三区小说| 91麻豆精品国产91久久久久久 | 在线观看一区日韩| 六月丁香婷婷色狠狠久久| 1024亚洲合集| 欧美不卡激情三级在线观看| 色婷婷狠狠综合| 国产在线视频精品一区| 一区二区三区中文免费| 久久久蜜桃精品| 欧美日韩亚洲另类| 99视频精品免费视频| 蜜臀av亚洲一区中文字幕| 亚洲理论在线观看| 国产日韩精品一区二区浪潮av| 欧美绝品在线观看成人午夜影视| 国产成人一区二区精品非洲| 日本欧美在线看| 一区av在线播放| 一区在线观看视频| 久久天堂av综合合色蜜桃网| 欧美日韩国产大片| 91小视频免费观看| 成人性视频免费网站| 久久成人羞羞网站| 亚洲mv在线观看| 亚洲精品伦理在线| 中文字幕一区二区三区色视频| 26uuu国产电影一区二区| 欧美精品日韩一区| 日本韩国欧美在线| 成人av午夜电影| 懂色av一区二区夜夜嗨| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲综合色自拍一区| 亚洲视频小说图片| 中文字幕五月欧美| 国产精品久久久一本精品| 欧美激情综合在线| 国产欧美精品一区二区色综合| 精品久久久久av影院 | 精品国产一区久久| 日韩一区和二区| 欧美精品国产精品| 欧美精品在线视频| 777色狠狠一区二区三区| 欧美久久久久久久久| 欧美精品九九99久久| 91精品婷婷国产综合久久性色 | 成人午夜av在线| 国产a精品视频| 成人午夜私人影院| 国产福利一区在线观看| 国产成人综合在线观看| 成人福利在线看| 91丨porny丨中文| 在线亚洲欧美专区二区| 欧美日韩卡一卡二| 在线不卡中文字幕| 精品国产乱码久久久久久牛牛| 亚洲精品一区二区三区在线观看 | 丝袜美腿亚洲一区| 午夜精品福利一区二区蜜股av | 久久综合色婷婷| 中文一区在线播放| 伊人色综合久久天天人手人婷| 亚洲一区二区三区在线| 午夜免费欧美电影| 久久99国产精品久久99 | av成人免费在线| 在线观看国产一区二区| 在线成人午夜影院| 久久久久久久久久久电影| 国产精品护士白丝一区av| 午夜精品久久久久久久久| 久久99久国产精品黄毛片色诱| 国产一区二区三区四区五区美女| 成人中文字幕在线| 欧美又粗又大又爽| 日韩精品一区二| 亚洲欧洲美洲综合色网| 亚洲妇女屁股眼交7| 国产在线观看一区二区| 91亚洲男人天堂| 日韩精品一区二区三区四区| 国产精品国产精品国产专区不片| 亚洲成a人片在线观看中文| 国产一区二区三区蝌蚪| 在线观看免费亚洲| 久久久久高清精品| 天天影视色香欲综合网老头| 高清国产一区二区| 91精品国产综合久久香蕉的特点 | 精品久久久久一区| 樱花草国产18久久久久| 国产一区二区三区国产| 欧美无乱码久久久免费午夜一区 | 国产精品高潮呻吟久久| 男人的j进女人的j一区| 99久久99久久精品国产片果冻 | 欧美色图12p| 久久精品视频一区二区| 日韩国产在线一| 97se亚洲国产综合自在线| 精品久久久久久久人人人人传媒| 亚洲乱码中文字幕| 成人自拍视频在线| 日韩欧美国产午夜精品| 亚洲成人av资源| 日本丰满少妇一区二区三区| 国产香蕉久久精品综合网| 欧美bbbbb| 51精品久久久久久久蜜臀| 亚洲人成精品久久久久久| 国产一区二区剧情av在线| 欧美一区二区三区四区久久 | 国产精品久久免费看| 精品亚洲国内自在自线福利| 欧美日韩视频专区在线播放| 亚洲视频一二三| av不卡在线观看| 国产欧美精品一区二区色综合朱莉| 久久不见久久见免费视频7| 3d动漫精品啪啪| 丝瓜av网站精品一区二区| 欧美在线观看禁18| 一区二区免费在线播放| 97精品超碰一区二区三区| 国产精品九色蝌蚪自拍| 国产一区二区免费视频| 欧美大片在线观看| 久久国产精品第一页| 91精品国产一区二区| 免费日本视频一区| 日韩欧美成人一区| 精品一区二区三区av| 欧美不卡一区二区三区四区| 久久99精品久久久久久动态图 | 久久久美女毛片| 国产风韵犹存在线视精品| 欧美极品美女视频| zzijzzij亚洲日本少妇熟睡| 国产欧美一区二区精品婷婷| 成人黄色电影在线| 亚洲人成网站色在线观看| 欧美色图激情小说| 日韩黄色一级片| www激情久久| 成人免费视频一区二区| 综合激情成人伊人| 欧日韩精品视频| 日韩极品在线观看| 精品美女在线观看| 白白色 亚洲乱淫| 亚洲第一会所有码转帖| 在线播放欧美女士性生活| 精品一区在线看| 日本一区二区成人在线| 色综合视频一区二区三区高清| 亚洲最大的成人av| 日韩欧美一级二级三级久久久| 狠狠色狠狠色综合日日91app| 国产精品三级电影| 欧美在线看片a免费观看| 免费国产亚洲视频| 国产精品麻豆网站| 欧美视频一区二区| 国产一区在线精品| 亚洲人午夜精品天堂一二香蕉| 欧美三级欧美一级|