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

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

?? libmng_read.c

?? 一款最完整的工業(yè)組態(tài)軟源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/* ************************************************************************** */
/* *             For conditions of distribution and use,                    * */
/* *                see copyright notice in libmng.h                        * */
/* ************************************************************************** */
/* *                                                                        * */
/* * project   : libmng                                                     * */
/* * file      : libmng_read.c             copyright (c) 2000-2004 G.Juyn   * */
/* * version   : 1.0.8                                                      * */
/* *                                                                        * */
/* * purpose   : Read logic (implementation)                                * */
/* *                                                                        * */
/* * author    : G.Juyn                                                     * */
/* *                                                                        * */
/* * comment   : implementation of the high-level read logic                * */
/* *                                                                        * */
/* * changes   : 0.5.1 - 05/08/2000 - G.Juyn                                * */
/* *             - changed strict-ANSI stuff                                * */
/* *             0.5.1 - 05/11/2000 - G.Juyn                                * */
/* *             - added callback error-reporting support                   * */
/* *             0.5.1 - 05/12/2000 - G.Juyn                                * */
/* *             - changed trace to macro for callback error-reporting      * */
/* *                                                                        * */
/* *             0.5.2 - 05/19/2000 - G.Juyn                                * */
/* *             - cleaned up some code regarding mixed support             * */
/* *             0.5.2 - 05/20/2000 - G.Juyn                                * */
/* *             - added support for JNG                                    * */
/* *             0.5.2 - 05/31/2000 - G.Juyn                                * */
/* *             - fixed up punctuation (contribution by Tim Rowley)        * */
/* *                                                                        * */
/* *             0.5.3 - 06/16/2000 - G.Juyn                                * */
/* *             - changed progressive-display processing                   * */
/* *                                                                        * */
/* *             0.9.1 - 07/08/2000 - G.Juyn                                * */
/* *             - changed read-processing for improved I/O-suspension      * */
/* *             0.9.1 - 07/14/2000 - G.Juyn                                * */
/* *             - changed EOF processing behavior                          * */
/* *             0.9.1 - 07/14/2000 - G.Juyn                                * */
/* *             - changed default readbuffer size from 1024 to 4200        * */
/* *                                                                        * */
/* *             0.9.2 - 07/27/2000 - G.Juyn                                * */
/* *             - B110320 - fixed GCC warning about mix-sized pointer math * */
/* *             0.9.2 - 07/31/2000 - G.Juyn                                * */
/* *             - B110546 - fixed for improperly returning UNEXPECTEDEOF   * */
/* *             0.9.2 - 08/04/2000 - G.Juyn                                * */
/* *             - B111096 - fixed large-buffer read-suspension             * */
/* *             0.9.2 - 08/05/2000 - G.Juyn                                * */
/* *             - changed file-prefixes                                    * */
/* *                                                                        * */
/* *             0.9.3 - 08/26/2000 - G.Juyn                                * */
/* *             - added MAGN chunk                                         * */
/* *             0.9.3 - 10/11/2000 - G.Juyn                                * */
/* *             - removed test-MaGN                                        * */
/* *             0.9.3 - 10/16/2000 - G.Juyn                                * */
/* *             - added support for JDAA                                   * */
/* *                                                                        * */
/* *             0.9.5 - 01/23/2001 - G.Juyn                                * */
/* *             - fixed timing-problem with switching framing_modes        * */
/* *                                                                        * */
/* *             1.0.4 - 06/22/2002 - G.Juyn                                * */
/* *             - B495443 - incorrect suspend check in read_databuffer     * */
/* *                                                                        * */
/* *             1.0.5 - 07/04/2002 - G.Juyn                                * */
/* *             - added errorcode for extreme chunk-sizes                  * */
/* *             1.0.5 - 07/08/2002 - G.Juyn                                * */
/* *             - B578572 - removed eMNGma hack (thanks Dimitri!)          * */
/* *             1.0.5 - 07/16/2002 - G.Juyn                                * */
/* *             - B581625 - large chunks fail with suspension reads        * */
/* *             1.0.5 - 08/19/2002 - G.Juyn                                * */
/* *             - B597134 - libmng pollutes the linker namespace           * */
/* *             - added HLAPI function to copy chunks                      * */
/* *             1.0.5 - 09/16/2002 - G.Juyn                                * */
/* *             - added event handling for dynamic MNG                     * */
/* *                                                                        * */
/* *             1.0.6 - 05/25/2003 - G.R-P                                 * */
/* *             - added MNG_SKIPCHUNK_cHNK footprint optimizations         * */
/* *             1.0.6 - 07/07/2003 - G.R-P                                 * */
/* *             - added MNG_NO_DELTA_PNG reduction                         * */
/* *             - skip additional code when MNG_INCLUDE_JNG is not enabled * */
/* *             1.0.6 - 07/29/2003 - G.R-P                                 * */
/* *             - added conditionals around PAST chunk support             * */
/* *             1.0.6 - 08/17/2003 - G.R-P                                 * */
/* *             - added conditionals around non-VLC chunk support          * */
/* *                                                                        * */
/* *             1.0.7 - 03/10/2004 - G.R-P                                 * */
/* *             - added conditionals around openstream/closestream         * */
/* *                                                                        * */
/* *             1.0.8 - 04/08/2004 - G.Juyn                                * */
/* *             - added CRC existence & checking flags                     * */
/* *             1.0.8 - 04/11/2004 - G.Juyn                                * */
/* *             - added data-push mechanisms for specialized decoders      * */
/* *             1.0.8 - 07/06/2004 - G.R-P                                 * */
/* *             - defend against using undefined closestream function      * */
/* *             1.0.8 - 07/28/2004 - G.R-P                                 * */
/* *             - added check for extreme chunk-lengths                    * */
/* *                                                                        * */
/* ************************************************************************** */

#include "libmng.h"
#include "libmng_data.h"
#include "libmng_error.h"
#include "libmng_trace.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#include "libmng_memory.h"
#include "libmng_objects.h"
#include "libmng_object_prc.h"
#include "libmng_chunks.h"
#include "libmng_chunk_prc.h"
#include "libmng_chunk_io.h"
#include "libmng_display.h"
#include "libmng_read.h"

#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
#pragma option -A                      /* force ANSI-C */
#endif

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

#ifdef MNG_INCLUDE_READ_PROCS

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

mng_retcode mng_process_eof (mng_datap pData)
{
  if (!pData->bEOF)                    /* haven't closed the stream yet ? */
  {
    pData->bEOF = MNG_TRUE;            /* now we do! */

#ifndef MNG_NO_OPEN_CLOSE_STREAM
    if (pData->fClosestream && !pData->fClosestream ((mng_handle)pData))
    {
      MNG_ERROR (pData, MNG_APPIOERROR)
    }
#endif
  }

  return MNG_NOERROR;
}

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

mng_retcode mng_release_pushdata (mng_datap pData)
{
  mng_pushdatap pFirst  = pData->pFirstpushdata;
  mng_pushdatap pNext   = pFirst->pNext;

#ifdef MNG_SUPPORT_TRACE
  MNG_TRACE (pData, MNG_FN_RELEASE_PUSHDATA, MNG_LC_START)
#endif

  pData->pFirstpushdata = pNext;       /* next becomes the first */

  if (!pNext)                          /* no next? => no last! */
    pData->pLastpushdata = MNG_NULL;
                                       /* buffer owned and release callback defined? */
  if ((pFirst->bOwned) && (pData->fReleasedata))
    pData->fReleasedata ((mng_handle)pData, pFirst->pData, pFirst->iLength);
  else                                 /* otherwise use internal free mechanism */
    MNG_FREEX (pData, pFirst->pData, pFirst->iLength)
                                       /* and free it */
  MNG_FREEX (pData, pFirst, sizeof(mng_pushdata))

#ifdef MNG_SUPPORT_TRACE
  MNG_TRACE (pData, MNG_FN_RELEASE_PUSHDATA, MNG_LC_END)
#endif

  return MNG_NOERROR;
}

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

mng_retcode mng_release_pushchunk (mng_datap pData)
{
  mng_pushdatap pFirst  = pData->pFirstpushchunk;
  mng_pushdatap pNext   = pFirst->pNext;

#ifdef MNG_SUPPORT_TRACE
  MNG_TRACE (pData, MNG_FN_RELEASE_PUSHCHUNK, MNG_LC_START)
#endif

  pData->pFirstpushchunk = pNext;      /* next becomes the first */

  if (!pNext)                          /* no next? => no last! */
    pData->pLastpushchunk = MNG_NULL;
                                       /* buffer owned and release callback defined? */
  if ((pFirst->bOwned) && (pData->fReleasedata))
    pData->fReleasedata ((mng_handle)pData, pFirst->pData, pFirst->iLength);
  else                                 /* otherwise use internal free mechanism */
    MNG_FREEX (pData, pFirst->pData, pFirst->iLength)
                                       /* and free it */
  MNG_FREEX (pData, pFirst, sizeof(mng_pushdata))

#ifdef MNG_SUPPORT_TRACE
  MNG_TRACE (pData, MNG_FN_RELEASE_PUSHCHUNK, MNG_LC_END)
#endif

  return MNG_NOERROR;
}

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

MNG_LOCAL mng_retcode read_data (mng_datap    pData,
                                 mng_uint8p   pBuf,
                                 mng_uint32   iSize,
                                 mng_uint32 * iRead)
{
  mng_retcode   iRetcode;
  mng_uint32    iTempsize = iSize;
  mng_uint8p    pTempbuf  = pBuf;
  mng_pushdatap pPush     = pData->pFirstpushdata;
  mng_uint32    iPushsize = 0;
  *iRead                  = 0;         /* nothing yet */

#ifdef MNG_SUPPORT_TRACE
  MNG_TRACE (pData, MNG_FN_READ_DATA, MNG_LC_START)
#endif

  while (pPush)                        /* calculate size of pushed data */
  {
    iPushsize += pPush->iRemaining;
    pPush      = pPush->pNext;
  }

  if (iTempsize <= iPushsize)          /* got enough push data? */
  {
    while (iTempsize)
    {
      pPush = pData->pFirstpushdata;
                                       /* enough data remaining in this buffer? */
      if (pPush->iRemaining <= iTempsize)
      {                                /* no: then copy what we've got */
        MNG_COPY (pTempbuf, pPush->pDatanext, pPush->iRemaining)
                                       /* move pointers & lengths */
        pTempbuf  += pPush->iRemaining;
        *iRead    += pPush->iRemaining;
        iTempsize -= pPush->iRemaining;
                                       /* release the depleted buffer */
        iRetcode = mng_release_pushdata (pData);
        if (iRetcode)
          return iRetcode;
      }
      else
      {                                /* copy the needed bytes */
        MNG_COPY (pTempbuf, pPush->pDatanext, iTempsize)
                                       /* move pointers & lengths */
        pPush->iRemaining -= iTempsize;
        pPush->pDatanext  += iTempsize;
        pTempbuf          += iTempsize;
        *iRead            += iTempsize;
        iTempsize         = 0;         /* all done!!! */
      }
    }
  }
  else
  {
    mng_uint32 iTempread = 0;
                                       /* get it from the app then */
    if (!pData->fReaddata (((mng_handle)pData), pTempbuf, iTempsize, &iTempread))
      MNG_ERROR (pData, MNG_APPIOERROR);

    *iRead += iTempread;
  }

#ifdef MNG_SUPPORT_TRACE
  MNG_TRACE (pData, MNG_FN_READ_DATA, MNG_LC_END)
#endif

  return MNG_NOERROR;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丨九色丨尤物| 成人18视频在线播放| 亚洲国产精品一区二区尤物区| 亚洲国产日产av| 成人在线视频一区二区| 91精品国产欧美一区二区成人| 中文字幕不卡三区| 蜜臀av性久久久久蜜臀av麻豆| 99精品视频在线观看| 久久久蜜臀国产一区二区| 日韩专区中文字幕一区二区| 99精品视频免费在线观看| 精品处破学生在线二十三| 午夜精品福利一区二区三区av| 成人高清伦理免费影院在线观看| 欧美成人性战久久| 日韩av一区二区在线影视| 99久久精品免费| 国产午夜精品一区二区三区嫩草| 免费观看在线色综合| 欧美在线啊v一区| 亚洲色图20p| 99久久精品免费| 欧美一二区视频| 亚洲夂夂婷婷色拍ww47| 91美女福利视频| 亚洲天堂中文字幕| 99久久精品情趣| 亚洲精品日韩综合观看成人91| 懂色av一区二区三区免费观看| 久久久久99精品一区| 国产精品嫩草影院com| 国产精品一区在线观看乱码| 久久久久国产精品免费免费搜索| 狠狠色丁香婷婷综合| 亚洲精品在线网站| 国产91丝袜在线18| 国产精品久久久一区麻豆最新章节| 国产精品18久久久| 国产精品不卡在线| 91国在线观看| 午夜久久久影院| 欧美成人乱码一区二区三区| 国产一区二区伦理片| 国产精品丝袜在线| 91蝌蚪porny成人天涯| 亚洲午夜精品在线| 日韩欧美国产三级电影视频| 国内精品在线播放| 国产精品久久久久影院亚瑟 | 欧美乱熟臀69xxxxxx| 午夜影院久久久| 精品成人佐山爱一区二区| 国产成人免费视频网站 | 国产色产综合色产在线视频| 国产精品1区二区.| 一区二区三区产品免费精品久久75| 欧美系列日韩一区| 精品一区二区三区欧美| 中文字幕免费在线观看视频一区| 色av一区二区| 麻豆精品视频在线| 中文字幕人成不卡一区| 欧美丝袜自拍制服另类| 韩国精品免费视频| 一区二区激情小说| 久久精品视频在线看| 欧洲精品一区二区三区在线观看| 捆绑变态av一区二区三区| 国产精品乱码久久久久久| 欧美视频在线一区| 国产高清一区日本| 亚洲国产综合在线| 国产精品视频第一区| 欧美剧情电影在线观看完整版免费励志电影| 久久精品国产99国产精品| 日韩毛片视频在线看| 日韩精品最新网址| 欧美性猛交xxxxxxxx| 国产精品资源站在线| 亚洲一区二区在线播放相泽| 久久精品人人做| 777欧美精品| 色欧美片视频在线观看在线视频| 精品一区二区av| 性做久久久久久免费观看| 国产精品乱人伦中文| 日韩精品一区二区三区中文精品| 国产一区三区三区| 一区二区三区在线影院| 国产午夜精品一区二区三区视频| 欧美一区二区成人6969| 欧美视频中文字幕| 国产91综合一区在线观看| 天天综合网 天天综合色| 国产精品久久久久久久久动漫| 欧美电影免费观看高清完整版在| 欧美自拍偷拍一区| 99在线热播精品免费| 激情综合色播五月| 一区二区三区四区视频精品免费| 国产精品美女视频| 久久久久久久久久久久久夜| 欧美一区二区三区在线看| 在线看一区二区| 99re8在线精品视频免费播放| 国产一区二区三区四区五区美女 | 精品欧美乱码久久久久久| 欧美精品久久99久久在免费线| 色综合天天综合在线视频| 国产电影一区在线| 国产在线精品一区在线观看麻豆| 七七婷婷婷婷精品国产| 亚洲第一精品在线| 亚洲va国产天堂va久久en| 一区二区三区美女| 亚洲综合在线电影| 亚洲一区二区三区四区不卡| 亚洲永久免费av| 亚洲美女免费视频| 一区二区成人在线| 亚洲国产美国国产综合一区二区| 亚洲视频你懂的| 亚洲国产日韩在线一区模特| 亚洲综合久久av| 五月婷婷激情综合| 日韩av中文字幕一区二区| 男女性色大片免费观看一区二区| 免费观看一级特黄欧美大片| 久久国产成人午夜av影院| 国产麻豆精品在线| 成人av网站免费观看| 91在线观看污| 欧美日韩国产bt| 日韩美一区二区三区| 国产校园另类小说区| 中文字幕综合网| 性感美女极品91精品| 奇米一区二区三区| 成人午夜激情视频| 在线观看视频欧美| 日韩欧美一区二区免费| 国产日韩欧美激情| 亚洲一区在线观看免费观看电影高清 | 丁香激情综合五月| 9191成人精品久久| 精品免费日韩av| 国产精品久久久久久久久免费桃花 | 精品三级在线观看| 国产精品人人做人人爽人人添| 亚洲精品ww久久久久久p站| 日韩高清在线电影| 国产成人在线电影| 欧美丝袜丝交足nylons图片| 日韩精品一区二区三区中文不卡| 欧美经典一区二区| 手机精品视频在线观看| 国产一区二区免费看| 在线观看不卡视频| 久久青草欧美一区二区三区| 日韩伦理电影网| 蜜臀av国产精品久久久久| 成人黄色在线网站| 欧美日韩不卡在线| 国产色产综合色产在线视频| 亚洲美女区一区| 九一九一国产精品| 不卡的电影网站| 91精品国产综合久久精品app| 中文字幕一区免费在线观看| 麻豆国产欧美日韩综合精品二区| 不卡一区二区三区四区| 欧美xxxx老人做受| 亚洲一区在线观看免费| 国产乱色国产精品免费视频| 欧美日韩久久久一区| 亚洲欧洲中文日韩久久av乱码| 精品在线播放午夜| 欧美一区二区三级| 亚洲福利视频一区二区| 高清不卡一区二区在线| 精品国免费一区二区三区| 丝瓜av网站精品一区二区| 色哟哟一区二区| 欧美国产日韩亚洲一区| 九一九一国产精品| 91精品国产色综合久久ai换脸| 亚洲自拍偷拍麻豆| 色婷婷综合视频在线观看| 久久精品一区二区三区av| 蓝色福利精品导航| 日韩一二三区视频| 日韩制服丝袜av| 欧美人成免费网站| 亚洲一区二区三区自拍| 91视频免费播放| 一区二区三区不卡视频在线观看 | 欧美久久久久久蜜桃| 性做久久久久久免费观看欧美| 欧美手机在线视频|