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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? odfilebuf.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫(kù)
?? CPP
字號(hào):
#include <stdlib.h>#include "OdaCommon.h"#include "OdFileBuf.h"//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////OdBaseFileBuf::OdBaseFileBuf()    : m_fp(0)	  , m_FileName("")    , m_length(ERR_VAL)    , m_shMode(Oda::kShareDenyNo){}void OdBaseFileBuf::close(){  m_length = ERR_VAL;  m_FileName = "";  if (m_fp)  {    if (fclose(m_fp) != 0)		{      ODA_FAIL(); // eFileCloseError;		}    m_fp = 0;  }}#ifdef _WIN32_WCE#define _IOFBF          0x0000#endifvoid OdBaseFileBuf::open(const OdChar *path, const char *access){  m_fp = fopen(path, access);  if (m_fp)  {    setvbuf(m_fp, 0, _IOFBF, 8192);    m_FileName = path;  }  else    throw OdError_CantOpenFile(path);}////////////////////////////////////////////////////////////////////OdWrFileBuf::OdWrFileBuf()    : m_position(ERR_VAL)  {}OdWrFileBuf::~OdWrFileBuf(){  close();}void OdWrFileBuf::open(  const OdChar* path,   Oda::FileShareMode /*shMode*/,   Oda::FileAccessMode /*nDesiredAccess*/,   Oda::FileCreationDisposition /*nCreationDisposition*/){  OdString  sMode = "wb";  //if (shMode == Oda::kShareDenyReadWrite)  m_position = 0;  m_length = 0;  OdBaseFileBuf::open(path, "wb");  return;}void OdWrFileBuf::close(){  m_position = ERR_VAL;  OdBaseFileBuf::close();}OdUInt32 OdWrFileBuf::length(){  return m_length;}OdUInt32 OdWrFileBuf::seek(OdInt32 offset, OdDb::FilerSeekType whence){  switch (whence) {  case OdDb::kSeekFromStart:    m_position = offset;    break;  case OdDb::kSeekFromCurrent:    m_position += offset;    break;  case OdDb::kSeekFromEnd:    m_position = m_length - offset;    break;  }  if (fseek(m_fp, m_position, SEEK_SET) != 0)    m_position = ERR_VAL;  // Error  return m_position;}OdUInt32 OdWrFileBuf::tell(){  return m_position;}bool OdWrFileBuf::isEof(){  return (m_position >= m_length);}OdUInt32 OdWrFileBuf::getShareMode(){  return (OdUInt32)m_shMode;}void OdWrFileBuf::putByte(OdUInt8 val){	if(::fputc(val,m_fp)==EOF)	{    throw OdError_FileWriteError(m_FileName);	}  if (++m_position > m_length)    m_length = m_position;}void OdWrFileBuf::putBytes(const void* buff, OdUInt32 nByteLen){	if(::fwrite(buff, 1, nByteLen, m_fp) < nByteLen)	{    throw OdError_FileWriteError(m_FileName);	}  m_position += nByteLen;  if (m_position > m_length)    m_length = m_position;}////////////////////////////////////////////////////////////////////////////////const int OdRdFileBuf::m_BufSize = 8192;const int OdRdFileBuf::m_PosMask(~(8192-1));OdRdFileBuf::OdRdFileBuf()    : m_Counter(0L){  init();}void OdRdFileBuf::init(){   for (int i = 0; i < NUM_BUFFERS; i++)  {    m_DataBlock[i].buf = NULL;    m_DataBlock[i].counter = -1L;    m_DataBlock[i].validbytes=0;    m_DataBlock[i].startaddr = ERR_VAL;  }}OdRdFileBuf::~OdRdFileBuf(){  close();}void OdRdFileBuf::close(){  // indicate buffers no longer in use  for (int i = 0; i < NUM_BUFFERS; i++)  {    if (m_DataBlock[i].buf)      ::odrxFree(m_DataBlock[i].buf);    m_DataBlock[i].buf = NULL;    m_DataBlock[i].counter = -1L;    m_DataBlock[i].validbytes=0;    m_DataBlock[i].startaddr = ERR_VAL;  }  OdBaseFileBuf::close();}void OdRdFileBuf::open(  const OdChar * fname,   Oda::FileShareMode shMode,  Oda::FileAccessMode /*nDesiredAccess*/,   Oda::FileCreationDisposition /*nCreationDisposition*/){  OdString caMode;  if (shMode == Oda::kShareDenyWrite || shMode == Oda::kShareDenyReadWrite)    caMode = "r+b";  else     caMode = "rb";  OdBaseFileBuf::open(fname, caMode.c_str());  // Get file length  OdUInt32 curLoc = ftell(m_fp);	fseek(m_fp, 0L, 2);	m_length = ftell(m_fp);  fseek(m_fp, curLoc, 0);  int i;  m_BufBytes= 0;  m_BytesLeft= 0;  m_BufPos=0L;  // to start reads from 0L  m_pCurBuf=NULL;  m_pNextChar = m_pCurBuf;  m_UsingBlock = -1;  m_PhysFilePos=0L;  for (i = 0; i < NUM_BUFFERS; i++)  {    m_DataBlock[i].buf = (OdUInt8*)::odrxAlloc(m_BufSize);    m_DataBlock[i].validbytes=0;    m_DataBlock[i].counter = -1L;    m_DataBlock[i].startaddr = ERR_VAL;  }  seek(0L, OdDb::kSeekFromStart);  // initial seek, gets a buffer & stuff  return;}bool OdRdFileBuf::filbuf( ){  int i, minindex;  OdInt32 minlru;  struct blockstru *minptr;  m_UsingBlock = -1;  /* see if we are holding it already */  for (i = 0; i < NUM_BUFFERS; i++)  {    if (m_DataBlock[i].startaddr==m_BufPos)      break;  }  if (i < NUM_BUFFERS)   // we are already holding this part of the file  {    m_pCurBuf=m_DataBlock[i].buf;    m_BufPos=m_DataBlock[i].startaddr;    m_BytesLeft=m_BufBytes=m_DataBlock[i].validbytes;    m_pNextChar=m_pCurBuf;    m_DataBlock[i].counter=m_Counter++;    m_UsingBlock=i;    return true;  }  /* not holding it, so look for a buffer to read into */  /* first see if any are not yet loaded */  minptr=NULL;  minindex=0;  for (i = 0; i < NUM_BUFFERS; i++)  {    if (m_DataBlock[i].startaddr==ERR_VAL)    {      minindex=i;      minptr=&m_DataBlock[i];      break;    }  }  /* if all were used, then look for the least recently used one */  if (minptr==NULL)  {    minlru=0x7FFFFFFF;    minptr=NULL;    minindex=0;    for (i = 0; i < NUM_BUFFERS; i++) {      if (m_DataBlock[i].counter<0L)        m_DataBlock[i].counter=0L;      if (m_DataBlock[i].counter<minlru) {        minlru=m_DataBlock[i].counter;        minptr=&m_DataBlock[i];        minindex=i;      }    }  }  if (minptr==NULL)  {    ODA_FAIL();    return false;  /* couldn't find one */  }  /* if we are not already physically at the read location, move there */  /* then read into the buffer */  if (m_PhysFilePos!=m_BufPos /*|| readerror*/)  {    fseek(m_fp, m_BufPos, SEEK_SET);  }  m_BufBytes = m_BytesLeft =    (short) fread(minptr->buf, 1, m_BufSize, m_fp);  m_PhysFilePos=m_BufPos+m_BufBytes;  if (m_BufBytes > 0)  {    minptr->validbytes = m_BufBytes;    minptr->startaddr = m_BufPos;    minptr->counter=m_Counter++;    m_pCurBuf=minptr->buf;    m_pNextChar = m_pCurBuf;    m_UsingBlock=minindex;    return true;  }  return false;}OdUInt32 OdRdFileBuf::getShareMode(){  return (OdUInt32)m_shMode;}OdUInt32 OdRdFileBuf::length(){  return m_length;}OdUInt32 OdRdFileBuf::seek(OdInt32 offset, OdDb::FilerSeekType whence){  int bytestoadvance;  switch (whence)  {  case OdDb::kSeekFromStart:    break;  case OdDb::kSeekFromCurrent:    offset += (m_BufPos+(m_pNextChar - m_pCurBuf));    break;  case OdDb::kSeekFromEnd:    offset = m_length - offset;    break;  }  ODA_ASSERT(offset >= 0);  // from here on assume whence is 0  // if it's not in the area we're holding, seek to it  if (OdUInt32(offset) < m_BufPos || OdUInt32(offset) >= m_BufPos + m_BufBytes)  {    m_BufPos=offset & m_PosMask;    if (!filbuf( )) // locates it if we're already holding in another block    {      m_pNextChar = NULL;      m_pCurBuf = NULL;      m_BytesLeft = 0;      throw OdError(eEndOfFile);      //return ERR_VAL;    }  }  m_pNextChar = (m_pCurBuf + (bytestoadvance=(OdUInt16)(offset - m_BufPos)));  m_BytesLeft = m_BufBytes - bytestoadvance;  return(offset);}OdUInt32 OdRdFileBuf::tell(){  return (m_BufPos + (m_pNextChar - m_pCurBuf));}bool OdRdFileBuf::isEof(){  if (m_BytesLeft > 0)    return false;  if (m_length == 0)    return true;  m_BufPos += m_BufBytes;  return !filbuf();}OdUInt8 OdRdFileBuf::getByte(){  m_DataBlock[m_UsingBlock].counter=m_Counter++;  if (m_BytesLeft<=0) {    m_BufPos+=m_BufBytes;    if (!filbuf())    {      throw OdError(eEndOfFile);    }  }  m_BytesLeft--;  return (*m_pNextChar++);}void OdRdFileBuf::getBytes(void* buffer, OdUInt32 nLen){  OdInt32 bytesleft;  OdUInt16 bytestoread;  unsigned char *buf=(unsigned char *)buffer;  if (nLen > 0)  {    m_DataBlock[m_UsingBlock].counter=m_Counter++;    bytesleft = nLen;    while (bytesleft > 0L && !isEof( )) {      if ((OdInt32)m_BytesLeft<bytesleft) bytestoread=(OdUInt16)m_BytesLeft;      else bytestoread=(OdUInt16)bytesleft;      memcpy(buf,m_pNextChar,bytestoread);      m_BytesLeft -= bytestoread;      m_pNextChar += bytestoread;      buf += bytestoread;      bytesleft -= bytestoread;    }    if (bytesleft > 0L)      throw OdError(eEndOfFile);  }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线你懂的| 成人教育av在线| 国产视频一区在线观看| 91视视频在线观看入口直接观看www| 日韩av二区在线播放| 国产精品亲子乱子伦xxxx裸| 91精品国产综合久久久久久久久久| 99久久亚洲一区二区三区青草 | 欧美高清在线一区二区| 欧美美女一区二区三区| jvid福利写真一区二区三区| 美国欧美日韩国产在线播放| 亚洲激情在线播放| 欧美国产欧美综合| 日韩美女一区二区三区四区| 欧美日韩精品综合在线| 成人av先锋影音| 狠狠色丁香婷婷综合| 日日摸夜夜添夜夜添亚洲女人| 亚洲欧美日韩在线播放| 国产女主播在线一区二区| 欧美电视剧免费观看| 91精品中文字幕一区二区三区| 91麻豆免费看| 91福利视频网站| 粗大黑人巨茎大战欧美成人| 精品午夜一区二区三区在线观看 | 国产一级精品在线| 美女脱光内衣内裤视频久久影院| 亚洲国产毛片aaaaa无费看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲一区二区在线免费观看视频| 亚洲天堂成人在线观看| 国产精品久久久久久久久搜平片| 国产日韩精品视频一区| 久久青草欧美一区二区三区| 精品成人一区二区| 国产亚洲va综合人人澡精品| 久久久久久免费| 久久精品亚洲一区二区三区浴池| 久久久五月婷婷| 欧美国产激情二区三区 | 日韩精品自拍偷拍| 91精品国产福利在线观看| 欧美日韩国产乱码电影| 这里是久久伊人| 欧美一区二区三区人| 日韩欧美亚洲国产精品字幕久久久| 欧美一区永久视频免费观看| 日韩精品一区在线| 欧美mv日韩mv国产网站| 久久先锋资源网| 国产午夜精品一区二区| **性色生活片久久毛片| 亚洲最大成人综合| 婷婷综合另类小说色区| 久久草av在线| 成人在线视频首页| 色综合久久久久久久久| 欧美日韩国产123区| 日韩欧美在线123| 国产人伦精品一区二区| 自拍偷拍欧美激情| 亚洲成a人在线观看| 久88久久88久久久| 白白色 亚洲乱淫| 欧美日韩国产美女| 久久久亚洲精华液精华液精华液 | 精品久久久久久久久久久久包黑料 | 国产黄色成人av| 成人免费视频国产在线观看| 欧美在线啊v一区| 欧美videossexotv100| 国产精品传媒在线| 亚洲午夜精品网| 国产一区二区三区黄视频| 91一区二区三区在线播放| 精品视频一区二区三区免费| 欧美精品一区二区久久婷婷| 亚洲欧美区自拍先锋| 精品综合久久久久久8888| 播五月开心婷婷综合| 7799精品视频| 亚洲欧洲av色图| 久久成人免费网站| 色成年激情久久综合| 日韩色在线观看| 日韩毛片精品高清免费| 免费av成人在线| 色综合久久精品| 精品国产凹凸成av人导航| 亚洲女人的天堂| 国产麻豆精品95视频| 欧美日韩一区二区欧美激情| 国产精品欧美精品| 久久99精品久久久久久国产越南 | 欧美日本不卡视频| 国产精品免费久久久久| 免费av网站大全久久| 色婷婷亚洲一区二区三区| 欧美精品一区二区三区高清aⅴ| 夜夜精品视频一区二区 | 在线中文字幕不卡| 国产女人水真多18毛片18精品视频| 亚洲成在人线在线播放| 成人黄色一级视频| 亚洲精品一区二区精华| 偷拍一区二区三区| 色婷婷综合久色| 国产欧美日韩一区二区三区在线观看| 日韩制服丝袜av| 欧美中文字幕亚洲一区二区va在线| 久久久一区二区| 九九视频精品免费| 911精品国产一区二区在线| 亚洲精品国久久99热| 成人精品高清在线| 久久久精品国产免费观看同学| 麻豆免费精品视频| 欧美夫妻性生活| 亚洲一区二区精品久久av| hitomi一区二区三区精品| 久久久99精品免费观看| 激情伊人五月天久久综合| 91麻豆精品国产| 视频在线观看国产精品| 欧美综合天天夜夜久久| 亚洲欧美日韩系列| 91视频精品在这里| 国产精品久久久久影院色老大 | 91蜜桃网址入口| 国产精品久久久久一区| 丰满亚洲少妇av| 日本一区二区三区国色天香| 国产精品综合在线视频| 精品国产髙清在线看国产毛片| 麻豆精品一区二区av白丝在线| 欧美日韩一区二区电影| 五月天亚洲婷婷| 欧美一级搡bbbb搡bbbb| 琪琪久久久久日韩精品| 91精品国产欧美一区二区18| 日本va欧美va瓶| 精品国产99国产精品| 国产剧情一区二区三区| 日本一区二区高清| av成人动漫在线观看| 一区二区三区四区乱视频| 在线观看成人小视频| 午夜不卡在线视频| 在线综合亚洲欧美在线视频| 美女国产一区二区三区| 久久尤物电影视频在线观看| 国产一区二区日韩精品| 国产精品全国免费观看高清| 99在线精品视频| 一区二区免费在线| 337p亚洲精品色噜噜狠狠| 另类欧美日韩国产在线| 久久久精品综合| 91视频国产观看| 图片区小说区区亚洲影院| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人综合亚洲网站| 亚洲欧美日韩精品久久久久| 欧美日韩精品免费观看视频| 老司机午夜精品| 国产精品国产三级国产普通话三级| 日本二三区不卡| 奇米影视一区二区三区| 欧美激情一二三区| 欧美色区777第一页| 国产一区视频在线看| 亚洲免费观看高清完整版在线观看 | 一本久久a久久精品亚洲| 亚洲高清免费观看高清完整版在线观看| 欧美一区二区在线看| 国产v综合v亚洲欧| 亚洲大片在线观看| 久久久久久久久久久电影| 在线视频你懂得一区| 老司机午夜精品99久久| 亚洲图片激情小说| 91精品国产综合久久精品性色 | 91精品麻豆日日躁夜夜躁| 国产高清成人在线| 亚洲成精国产精品女| 欧美国产日韩精品免费观看| 欧美二区三区91| 东方欧美亚洲色图在线| 天天影视网天天综合色在线播放| 国产日产欧产精品推荐色| 91精品国产综合久久久久久久| 成人精品视频网站| 久久国产精品99精品国产| 一区二区不卡在线播放 | 亚洲另类在线一区| 久久亚洲综合色一区二区三区| 欧洲一区二区三区在线| 成人av电影在线播放|