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

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

?? zfstream.h

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? H
字號:
/*
 * A C++ I/O streams interface to the zlib gz* functions
 *
 * by Ludwig Schwardt <schwardt@sun.ac.za>
 * original version by Kevin Ruland <kevin@rodin.wustl.edu>
 *
 * This version is standard-compliant and compatible with gcc 3.x.
 */

#ifndef ZFSTREAM_H
#define ZFSTREAM_H

#include <istream>  // not iostream, since we don't need cin/cout
#include <ostream>
#include "zlib.h"

/*****************************************************************************/

/**
 *  @brief  Gzipped file stream buffer class.
 *
 *  This class implements basic_filebuf for gzipped files. It doesn't yet support
 *  seeking (allowed by zlib but slow/limited), putback and read/write access
 *  (tricky). Otherwise, it attempts to be a drop-in replacement for the standard
 *  file streambuf.
*/
class gzfilebuf : public std::streambuf
{
public:
  //  Default constructor.
  gzfilebuf();

  //  Destructor.
  virtual
  ~gzfilebuf();

  /**
   *  @brief  Set compression level and strategy on the fly.
   *  @param  comp_level  Compression level (see zlib.h for allowed values)
   *  @param  comp_strategy  Compression strategy (see zlib.h for allowed values)
   *  @return  Z_OK on success, Z_STREAM_ERROR otherwise.
   *
   *  Unfortunately, these parameters cannot be modified separately, as the
   *  previous zfstream version assumed. Since the strategy is seldom changed,
   *  it can default and setcompression(level) then becomes like the old
   *  setcompressionlevel(level).
  */
  int
  setcompression(int comp_level,
                 int comp_strategy = Z_DEFAULT_STRATEGY);

  /**
   *  @brief  Check if file is open.
   *  @return  True if file is open.
  */
  bool
  is_open() const { return (file != NULL); }

  /**
   *  @brief  Open gzipped file.
   *  @param  name  File name.
   *  @param  mode  Open mode flags.
   *  @return  @c this on success, NULL on failure.
  */
  gzfilebuf*
  open(const char* name,
       std::ios_base::openmode mode);

  /**
   *  @brief  Attach to already open gzipped file.
   *  @param  fd  File descriptor.
   *  @param  mode  Open mode flags.
   *  @return  @c this on success, NULL on failure.
  */
  gzfilebuf*
  attach(int fd,
         std::ios_base::openmode mode);

  /**
   *  @brief  Close gzipped file.
   *  @return  @c this on success, NULL on failure.
  */
  gzfilebuf*
  close();

protected:
  /**
   *  @brief  Convert ios open mode int to mode string used by zlib.
   *  @return  True if valid mode flag combination.
  */
  bool
  open_mode(std::ios_base::openmode mode,
            char* c_mode) const;

  /**
   *  @brief  Number of characters available in stream buffer.
   *  @return  Number of characters.
   *
   *  This indicates number of characters in get area of stream buffer.
   *  These characters can be read without accessing the gzipped file.
  */
  virtual std::streamsize
  showmanyc();

  /**
   *  @brief  Fill get area from gzipped file.
   *  @return  First character in get area on success, EOF on error.
   *
   *  This actually reads characters from gzipped file to stream
   *  buffer. Always buffered.
  */
  virtual int_type
  underflow();

  /**
   *  @brief  Write put area to gzipped file.
   *  @param  c  Extra character to add to buffer contents.
   *  @return  Non-EOF on success, EOF on error.
   *
   *  This actually writes characters in stream buffer to
   *  gzipped file. With unbuffered output this is done one
   *  character at a time.
  */
  virtual int_type
  overflow(int_type c = traits_type::eof());

  /**
   *  @brief  Installs external stream buffer.
   *  @param  p  Pointer to char buffer.
   *  @param  n  Size of external buffer.
   *  @return  @c this on success, NULL on failure.
   *
   *  Call setbuf(0,0) to enable unbuffered output.
  */
  virtual std::streambuf*
  setbuf(char_type* p,
         std::streamsize n);

  /**
   *  @brief  Flush stream buffer to file.
   *  @return  0 on success, -1 on error.
   *
   *  This calls underflow(EOF) to do the job.
  */
  virtual int
  sync();

//
// Some future enhancements
//
//  virtual int_type uflow();
//  virtual int_type pbackfail(int_type c = traits_type::eof());
//  virtual pos_type
//  seekoff(off_type off,
//          std::ios_base::seekdir way,
//          std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out);
//  virtual pos_type
//  seekpos(pos_type sp,
//          std::ios_base::openmode mode = std::ios_base::in|std::ios_base::out);

private:
  /**
   *  @brief  Allocate internal buffer.
   *
   *  This function is safe to call multiple times. It will ensure
   *  that a proper internal buffer exists if it is required. If the
   *  buffer already exists or is external, the buffer pointers will be
   *  reset to their original state.
  */
  void
  enable_buffer();

  /**
   *  @brief  Destroy internal buffer.
   *
   *  This function is safe to call multiple times. It will ensure
   *  that the internal buffer is deallocated if it exists. In any
   *  case, it will also reset the buffer pointers.
  */
  void
  disable_buffer();

  /**
   *  Underlying file pointer.
  */
  gzFile file;

  /**
   *  Mode in which file was opened.
  */
  std::ios_base::openmode io_mode;

  /**
   *  @brief  True if this object owns file descriptor.
   *
   *  This makes the class responsible for closing the file
   *  upon destruction.
  */
  bool own_fd;

  /**
   *  @brief  Stream buffer.
   *
   *  For simplicity this remains allocated on the free store for the
   *  entire life span of the gzfilebuf object, unless replaced by setbuf.
  */
  char_type* buffer;

  /**
   *  @brief  Stream buffer size.
   *
   *  Defaults to system default buffer size (typically 8192 bytes).
   *  Modified by setbuf.
  */
  std::streamsize buffer_size;

  /**
   *  @brief  True if this object owns stream buffer.
   *
   *  This makes the class responsible for deleting the buffer
   *  upon destruction.
  */
  bool own_buffer;
};

/*****************************************************************************/

/**
 *  @brief  Gzipped file input stream class.
 *
 *  This class implements ifstream for gzipped files. Seeking and putback
 *  is not supported yet.
*/
class gzifstream : public std::istream
{
public:
  //  Default constructor
  gzifstream();

  /**
   *  @brief  Construct stream on gzipped file to be opened.
   *  @param  name  File name.
   *  @param  mode  Open mode flags (forced to contain ios::in).
  */
  explicit
  gzifstream(const char* name,
             std::ios_base::openmode mode = std::ios_base::in);

  /**
   *  @brief  Construct stream on already open gzipped file.
   *  @param  fd    File descriptor.
   *  @param  mode  Open mode flags (forced to contain ios::in).
  */
  explicit
  gzifstream(int fd,
             std::ios_base::openmode mode = std::ios_base::in);

  /**
   *  Obtain underlying stream buffer.
  */
  gzfilebuf*
  rdbuf() const
  { return const_cast<gzfilebuf*>(&sb); }

  /**
   *  @brief  Check if file is open.
   *  @return  True if file is open.
  */
  bool
  is_open() { return sb.is_open(); }

  /**
   *  @brief  Open gzipped file.
   *  @param  name  File name.
   *  @param  mode  Open mode flags (forced to contain ios::in).
   *
   *  Stream will be in state good() if file opens successfully;
   *  otherwise in state fail(). This differs from the behavior of
   *  ifstream, which never sets the state to good() and therefore
   *  won't allow you to reuse the stream for a second file unless
   *  you manually clear() the state. The choice is a matter of
   *  convenience.
  */
  void
  open(const char* name,
       std::ios_base::openmode mode = std::ios_base::in);

  /**
   *  @brief  Attach to already open gzipped file.
   *  @param  fd  File descriptor.
   *  @param  mode  Open mode flags (forced to contain ios::in).
   *
   *  Stream will be in state good() if attach succeeded; otherwise
   *  in state fail().
  */
  void
  attach(int fd,
         std::ios_base::openmode mode = std::ios_base::in);

  /**
   *  @brief  Close gzipped file.
   *
   *  Stream will be in state fail() if close failed.
  */
  void
  close();

private:
  /**
   *  Underlying stream buffer.
  */
  gzfilebuf sb;
};

/*****************************************************************************/

/**
 *  @brief  Gzipped file output stream class.
 *
 *  This class implements ofstream for gzipped files. Seeking and putback
 *  is not supported yet.
*/
class gzofstream : public std::ostream
{
public:
  //  Default constructor
  gzofstream();

  /**
   *  @brief  Construct stream on gzipped file to be opened.
   *  @param  name  File name.
   *  @param  mode  Open mode flags (forced to contain ios::out).
  */
  explicit
  gzofstream(const char* name,
             std::ios_base::openmode mode = std::ios_base::out);

  /**
   *  @brief  Construct stream on already open gzipped file.
   *  @param  fd    File descriptor.
   *  @param  mode  Open mode flags (forced to contain ios::out).
  */
  explicit
  gzofstream(int fd,
             std::ios_base::openmode mode = std::ios_base::out);

  /**
   *  Obtain underlying stream buffer.
  */
  gzfilebuf*
  rdbuf() const
  { return const_cast<gzfilebuf*>(&sb); }

  /**
   *  @brief  Check if file is open.
   *  @return  True if file is open.
  */
  bool
  is_open() { return sb.is_open(); }

  /**
   *  @brief  Open gzipped file.
   *  @param  name  File name.
   *  @param  mode  Open mode flags (forced to contain ios::out).
   *
   *  Stream will be in state good() if file opens successfully;
   *  otherwise in state fail(). This differs from the behavior of
   *  ofstream, which never sets the state to good() and therefore
   *  won't allow you to reuse the stream for a second file unless
   *  you manually clear() the state. The choice is a matter of
   *  convenience.
  */
  void
  open(const char* name,
       std::ios_base::openmode mode = std::ios_base::out);

  /**
   *  @brief  Attach to already open gzipped file.
   *  @param  fd  File descriptor.
   *  @param  mode  Open mode flags (forced to contain ios::out).
   *
   *  Stream will be in state good() if attach succeeded; otherwise
   *  in state fail().
  */
  void
  attach(int fd,
         std::ios_base::openmode mode = std::ios_base::out);

  /**
   *  @brief  Close gzipped file.
   *
   *  Stream will be in state fail() if close failed.
  */
  void
  close();

private:
  /**
   *  Underlying stream buffer.
  */
  gzfilebuf sb;
};

/*****************************************************************************/

/**
 *  @brief  Gzipped file output stream manipulator class.
 *
 *  This class defines a two-argument manipulator for gzofstream. It is used
 *  as base for the setcompression(int,int) manipulator.
*/
template<typename T1, typename T2>
  class gzomanip2
  {
  public:
    // Allows insertor to peek at internals
    template <typename Ta, typename Tb>
      friend gzofstream&
      operator<<(gzofstream&,
                 const gzomanip2<Ta,Tb>&);

    // Constructor
    gzomanip2(gzofstream& (*f)(gzofstream&, T1, T2),
              T1 v1,
              T2 v2);
  private:
    // Underlying manipulator function
    gzofstream&
    (*func)(gzofstream&, T1, T2);

    // Arguments for manipulator function
    T1 val1;
    T2 val2;
  };

/*****************************************************************************/

// Manipulator function thunks through to stream buffer
inline gzofstream&
setcompression(gzofstream &gzs, int l, int s = Z_DEFAULT_STRATEGY)
{
  (gzs.rdbuf())->setcompression(l, s);
  return gzs;
}

// Manipulator constructor stores arguments
template<typename T1, typename T2>
  inline
  gzomanip2<T1,T2>::gzomanip2(gzofstream &(*f)(gzofstream &, T1, T2),
                              T1 v1,
                              T2 v2)
  : func(f), val1(v1), val2(v2)
  { }

// Insertor applies underlying manipulator function to stream
template<typename T1, typename T2>
  inline gzofstream&
  operator<<(gzofstream& s, const gzomanip2<T1,T2>& m)
  { return (*m.func)(s, m.val1, m.val2); }

// Insert this onto stream to simplify setting of compression level
inline gzomanip2<int,int>
setcompression(int l, int s = Z_DEFAULT_STRATEGY)
{ return gzomanip2<int,int>(&setcompression, l, s); }

#endif // ZFSTREAM_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性xxxxxxxx| 色综合中文字幕国产| 国产精品私人自拍| 欧美精品色一区二区三区| 国产精品香蕉一区二区三区| 亚洲国产综合色| 亚洲欧洲另类国产综合| 宅男噜噜噜66一区二区66| 97精品久久久午夜一区二区三区| 日韩国产成人精品| 成人免费在线视频观看| 日韩欧美美女一区二区三区| 91黄色免费看| av中文一区二区三区| 国产在线不卡一区| 亚洲成人av中文| 亚洲美女淫视频| 国产精品免费观看视频| 欧美成人猛片aaaaaaa| 欧美日韩国产系列| 91国偷自产一区二区开放时间| 国产一区二区三区免费观看| 污片在线观看一区二区| 亚洲男人的天堂在线观看| 久久先锋影音av鲁色资源网| 欧美精品777| 欧美亚洲一区三区| 在线观看欧美黄色| eeuss鲁片一区二区三区 | 国产不卡在线一区| 看电视剧不卡顿的网站| 五月综合激情网| 亚洲自拍偷拍av| 亚洲精品成人天堂一二三| 国产精品超碰97尤物18| 国产精品久久久久影院老司 | 久久久久国色av免费看影院| 欧美一二三区精品| 欧美久久一二区| 欧美三级一区二区| 欧美日本国产视频| 欧美电影在线免费观看| 777午夜精品免费视频| 在线日韩一区二区| 在线看国产一区| 欧美午夜精品一区二区蜜桃| 在线观看国产一区二区| 欧美综合一区二区三区| 在线观看不卡视频| 51精品秘密在线观看| 日韩视频在线一区二区| 在线播放中文一区| 日韩三级高清在线| 欧美tickling网站挠脚心| 欧美不卡一二三| 久久久久久久久一| 国产精品毛片无遮挡高清| 国产精品久久久久久福利一牛影视| 国产午夜久久久久| 亚洲精品乱码久久久久久久久| 亚洲精品国产视频| 日韩经典一区二区| 国产制服丝袜一区| 成人黄色a**站在线观看| 一本一本大道香蕉久在线精品| 91视频在线看| 欧美日韩成人一区二区| 精品国产乱码久久久久久图片 | 日韩精品一区二区三区四区视频| 2024国产精品视频| 欧美国产精品一区| 亚洲精品一卡二卡| 热久久久久久久| 国产美女一区二区| 色婷婷亚洲精品| 91精品国产综合久久福利| 欧美一区二区三区免费在线看| 日韩欧美一区二区在线视频| 久久久亚洲精品一区二区三区| 亚洲人妖av一区二区| 五月婷婷另类国产| 国产成人av网站| 日本精品一级二级| 日韩免费福利电影在线观看| 亚洲欧洲综合另类| 三级亚洲高清视频| 不卡欧美aaaaa| 欧美一区在线视频| 亚洲精品va在线观看| 一二三四社区欧美黄| 国产九色精品成人porny| 欧洲精品视频在线观看| 久久―日本道色综合久久| 亚洲婷婷综合色高清在线| 免费在线观看一区二区三区| av中文字幕不卡| 精品第一国产综合精品aⅴ| 亚洲一区二区欧美日韩 | 懂色av一区二区三区蜜臀| 91成人在线免费观看| 日韩视频免费观看高清完整版| 国产精品久久精品日日| 久久成人免费网| 欧美系列在线观看| 中文字幕欧美一| 国内不卡的二区三区中文字幕 | 日韩精品一区在线| 亚洲精品中文在线观看| 盗摄精品av一区二区三区| 欧美一级免费观看| 亚洲国产日韩a在线播放性色| 99在线热播精品免费| 国产午夜亚洲精品午夜鲁丝片| 日韩成人一级片| 日本高清不卡视频| 国产精品视频在线看| 亚洲国产另类av| 国产精品88888| 日韩精品一区二区三区中文精品| 午夜免费欧美电影| 91亚洲精品一区二区乱码| 国产喂奶挤奶一区二区三区| 人人精品人人爱| 欧美二区在线观看| 亚洲国产日韩一区二区| 99精品国产99久久久久久白柏 | 全国精品久久少妇| 精品视频一区三区九区| 亚洲愉拍自拍另类高清精品| 99久久99久久久精品齐齐| 欧美国产精品一区二区| 国产福利不卡视频| 国产欧美一区二区在线| 国产精品一区久久久久| 久久综合网色—综合色88| 看电影不卡的网站| 欧美一区二区视频在线观看2020| 午夜精品久久久久久久 | 国产精品视频一二三区| 国产99久久久国产精品潘金| 国产嫩草影院久久久久| 高清成人免费视频| 日韩毛片精品高清免费| 色噜噜狠狠成人中文综合| 亚洲一区二区三区三| 欧美日韩一区二区在线观看视频| 五月婷婷激情综合| 欧美大度的电影原声| 国产精品综合一区二区三区| 精品福利二区三区| 国产成人午夜电影网| 欧美激情一二三区| 91免费看视频| 亚洲一区二区欧美| 日韩午夜精品视频| 国产成人精品aa毛片| 亚洲欧美日韩中文播放 | 欧美日韩国产精选| 日本不卡一二三| 久久久精品天堂| 99久久精品免费看国产| 亚洲主播在线观看| 日韩欧美卡一卡二| 国产精品亚洲专一区二区三区 | 国产日本欧洲亚洲| 91丨porny丨中文| 日韩精品一二三区| 日韩美一区二区三区| 成人av网站免费观看| 亚洲免费资源在线播放| 91精品国产一区二区| 国产成人精品在线看| 亚洲福利视频三区| 久久精品免视看| 欧美亚洲国产一卡| 国内不卡的二区三区中文字幕| 亚洲免费观看高清完整版在线观看 | 三级久久三级久久| 久久看人人爽人人| 一本色道a无线码一区v| 午夜精品视频一区| 国产精品久久久久aaaa| 91麻豆精品国产91久久久| 国产精一区二区三区| 亚洲福利视频导航| 日本一二三四高清不卡| 欧美日韩视频不卡| 成人禁用看黄a在线| 无吗不卡中文字幕| 中文字幕色av一区二区三区| 91精品在线免费| 99国产精品国产精品毛片| 日本午夜一本久久久综合| 亚洲欧美影音先锋| 日韩精品一区二区三区老鸭窝 | 成人黄页毛片网站| 蜜臀av性久久久久蜜臀aⅴ| 亚洲人成在线观看一区二区| 精品国产乱码久久久久久牛牛| 欧美在线观看视频一区二区三区|