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

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

?? avc_e00write.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
}/********************************************************************** *                          _AVCE00WriteCloseCoverFile() * * Close current coverage file and reset the contents of psInfo. * * File should have been previously opened by _AVCE00WriteCreateCoverFile(). * **********************************************************************/void  _AVCE00WriteCloseCoverFile(AVCE00WritePtr psInfo){    /*-----------------------------------------------------------------     * PRJ sections behave differently... since there is only one "object"     * per section, they accumulate lines while we read them, and we      * write everything at once when we reach the end-of-section (EOP) line.     *----------------------------------------------------------------*/    if (psInfo->eCurFileType == AVCFilePRJ)    {        AVCBinWriteObject(psInfo->hFile, psInfo->hParseInfo->cur.papszPrj);    }    AVCBinWriteClose(psInfo->hFile);    psInfo->hFile = NULL;    psInfo->eCurFileType = AVCFileUnknown;}/********************************************************************** *                          AVCE00WriteNextLine() * * Take the next line of E00 input for this coverage, parse it and  * write the result to the coverage. * * Important Note: The E00 source lines are assumed to be valid... the * library performs no validation on the consistency of what it is  * given as input (i.e. topology, polygons consistency, etc.). * So the coverage that will be created will be only as good as the  * E00 input that is used to generate it. * * Returns 0 on success or -1 on error. **********************************************************************/int     AVCE00WriteNextLine(AVCE00WritePtr psInfo, const char *pszLine){    /*-----------------------------------------------------------------     * TODO: Update this call to use _AVCE00ReadNextLineE00(), if     * possible.     *----------------------------------------------------------------*/    int nStatus = 0;    CPLErrorReset();    /*-----------------------------------------------------------------     * If we're at the top level inside a supersection... check if this     * supersection ends here.     *----------------------------------------------------------------*/    if (AVCE00ParseSuperSectionEnd(psInfo->hParseInfo, pszLine) == TRUE)    {        /* Nothing to do... it's all been done by the call to          * AVCE00ParseSuperSectionEnd()         */    }    else if (psInfo->eCurFileType == AVCFileUnknown)    {        /*-------------------------------------------------------------         * We're at the top level or inside a supersection... waiting          * to encounter a valid section or supersection header          * (i.e. "ARC  2", etc...)         *------------------------------------------------------------*/        /*-------------------------------------------------------------         * First check for a supersection header (TX6, RXP, IFO, ...)         *------------------------------------------------------------*/        if ( AVCE00ParseSuperSectionHeader(psInfo->hParseInfo,                                           pszLine) == AVCFileUnknown )        {            /*---------------------------------------------------------             * This was not a supersection header... check if it's a simple             * section header             *--------------------------------------------------------*/            psInfo->eCurFileType=AVCE00ParseSectionHeader(psInfo->hParseInfo,                                                          pszLine);        }        /*-------------------------------------------------------------         * If the coverage was created using AVC_DEFAULT_PREC and we are         * processing the first section header, then use this section's         * precision for the new coverage.         * (Note: this code segment will be executed only once per          *        coverage and only if AVC_DEFAULT_PREC was selected)         *------------------------------------------------------------*/        if (psInfo->nPrecision == AVC_DEFAULT_PREC &&            psInfo->eCurFileType != AVCFileUnknown)        {            psInfo->nPrecision = psInfo->hParseInfo->nPrecision;        }        if (psInfo->eCurFileType == AVCFileTABLE)        {            /*---------------------------------------------------------             * We can't create the file for a TABLE until the             * whole header has been read... send the first header             * line to the parser and wait until the whole header has              * been read.             *--------------------------------------------------------*/            AVCE00ParseNextLine(psInfo->hParseInfo, pszLine);         }        else if (psInfo->eCurFileType != AVCFileUnknown)        {            /*---------------------------------------------------------             * OK, we've found a valid section header... create the              * corresponding file in the coverage.             * Note: supersection headers don't trigger the creation             *       of any output file... they just alter the psInfo state.             *--------------------------------------------------------*/            nStatus = _AVCE00WriteCreateCoverFile(psInfo,                                                   psInfo->eCurFileType,                                       psInfo->hParseInfo->pszSectionHdrLine,                                                  NULL);        }    }    else if (psInfo->eCurFileType == AVCFileTABLE &&             ! psInfo->hParseInfo->bTableHdrComplete )    {        /*-------------------------------------------------------------         * We're reading a TABLE header... continue reading lines         * from the header, and create the output file only once         * the header will have been completely read.         *         * Note: When parsing a TABLE, the first object returned will          * be the AVCTableDef, then data records will follow.         *------------------------------------------------------------*/        AVCTableDef *psTableDef;        psTableDef = (AVCTableDef*)AVCE00ParseNextLine(psInfo->hParseInfo,                                                        pszLine);         if (psTableDef)        {            nStatus = _AVCE00WriteCreateCoverFile(psInfo,                                                   psInfo->eCurFileType,                                       psInfo->hParseInfo->pszSectionHdrLine,                                                  psTableDef);        }    }    else    {        /*-------------------------------------------------------------         * We're are in the middle of a section... first check if we         * have reached the end.         *         * note: The first call to AVCE00ParseSectionEnd() with FALSE will          *       not reset the parser until we close the file... and then         *       we call the function again to reset the parser.         *------------------------------------------------------------*/        if (AVCE00ParseSectionEnd(psInfo->hParseInfo, pszLine, FALSE))        {            _AVCE00WriteCloseCoverFile(psInfo);            AVCE00ParseSectionEnd(psInfo->hParseInfo, pszLine, TRUE);        }        else        /*-------------------------------------------------------------         * ... not at the end yet, so continue reading objects.         *------------------------------------------------------------*/        {            void *psObj;            psObj = AVCE00ParseNextLine(psInfo->hParseInfo, pszLine);            if (psObj)                AVCBinWriteObject(psInfo->hFile, psObj);        }    }    if (psInfo->hParseInfo->bForceEndOfSection)    {        /*-------------------------------------------------------------         * The last call encountered an implicit end of section, so         * we close the section now without waiting for an end-of-section         * line (there won't be any!)... and get ready to proceed with         * the next section.         * This is used for TABLEs.         *------------------------------------------------------------*/        _AVCE00WriteCloseCoverFile(psInfo);        AVCE00ParseSectionEnd(psInfo->hParseInfo, pszLine, TRUE);        /* psInfo->hParseInfo->bForceEndOfSection = FALSE; */    }    if (CPLGetLastErrorNo() != 0)        nStatus = -1;    return nStatus;}/********************************************************************** *                          AVCE00DeleteCoverage() * * Delete a coverage directory, its contents, and the associated info * tables. * * Note: * When deleting tables, only the ../info/arc????.nit and arc????.dat * need to be deleted; the arc.dir does not need to be updated.  This * is exactly what Arc/Info's KILL command does. * * Returns 0 on success or -1 on error. **********************************************************************/int     AVCE00DeleteCoverage(const char *pszCoverToDelete){    int i, j, nStatus = 0;    char *pszInfoPath, *pszCoverPath, *pszCoverName;    const char *pszFname;    char **papszTables=NULL, **papszFiles=NULL;    AVCE00ReadPtr   psInfo;    VSIStatBuf      sStatBuf;    AVCCoverType    eCoverType;    CPLErrorReset();    /*-----------------------------------------------------------------     * Since we don't want to duplicate all the logic to figure coverage     * and info dir name, etc... we'll simply open the coverage and     * grab the info we need from the coverage handle.     * By the same way, this will verify that the coverage exists and is     * valid.     *----------------------------------------------------------------*/    psInfo = AVCE00ReadOpen(pszCoverToDelete);    if (psInfo == NULL)    {        CPLError(CE_Failure, CPLE_FileIO,                 "Cannot delete coverage %s: it does not appear to be valid\n",                 pszCoverToDelete);        return -1;    }    pszCoverPath = CPLStrdup(psInfo->pszCoverPath);    pszInfoPath = CPLStrdup(psInfo->pszInfoPath);    pszCoverName = CPLStrdup(psInfo->pszCoverName);    eCoverType = psInfo->eCoverType;    AVCE00ReadClose(psInfo);    /*-----------------------------------------------------------------     * Delete files in cover directory.     *----------------------------------------------------------------*/    papszFiles = CPLReadDir(pszCoverPath);    for(i=0; nStatus==0 && papszFiles && papszFiles[i]; i++)    {        if (!EQUAL(".", papszFiles[i]) &&            !EQUAL("..", papszFiles[i]))        {            pszFname = CPLSPrintf("%s%s", pszCoverPath, papszFiles[i]);            if (unlink(pszFname) != 0)            {                CPLError(CE_Failure, CPLE_FileIO,                          "Failed deleting %s%s: %s",                          pszCoverPath, papszFiles[i], strerror);                nStatus = -1;                break;            }        }    }    CSLDestroy(papszFiles);    papszFiles = NULL;    /*-----------------------------------------------------------------     * Get the list of info files (ARC????) to delete and delete them     * (No 'info' directory for PC coverages)     *----------------------------------------------------------------*/    if (nStatus == 0 && eCoverType != AVCCoverPC && eCoverType != AVCCoverPC2)    {        papszTables = AVCBinReadListTables(pszInfoPath, pszCoverName,                                            &papszFiles, eCoverType,                                           NULL /*DBCSInfo*/);        for(i=0; nStatus==0 && papszFiles && papszFiles[i]; i++)        {            /* Convert table filename to lowercases */            for(j=0; papszFiles[i] && papszFiles[i][j]!='\0'; j++)                papszFiles[i][j] = tolower(papszFiles[i][j]);            /* Delete the .DAT file */            pszFname = CPLSPrintf("%s%s.dat", pszInfoPath, papszFiles[i]);            if ( VSIStat(pszFname, &sStatBuf) != -1 &&                 unlink(pszFname) != 0)            {                CPLError(CE_Failure, CPLE_FileIO,                          "Failed deleting %s%s: %s",                          pszInfoPath, papszFiles[i], strerror);                nStatus = -1;                break;            }            /* Delete the .DAT file */            pszFname = CPLSPrintf("%s%s.nit", pszInfoPath, papszFiles[i]);            if ( VSIStat(pszFname, &sStatBuf) != -1 &&                 unlink(pszFname) != 0)            {                CPLError(CE_Failure, CPLE_FileIO,                          "Failed deleting %s%s: %s",                          pszInfoPath, papszFiles[i], strerror);                nStatus = -1;                break;            }        }        CSLDestroy(papszTables);        CSLDestroy(papszFiles);    }    /*-----------------------------------------------------------------     * Delete the coverage directory itself     * In some cases, the directory could be locked by another application      * on the same system or somewhere on the network.       * Define AVC_IGNORE_RMDIR_ERROR at compile time if you want this      * error to be ignored.     *----------------------------------------------------------------*/    if (VSIRmdir(pszCoverPath) != 0)    {#ifndef AVC_IGNORE_RMDIR_ERROR        CPLError(CE_Failure, CPLE_FileIO,                  "Failed deleting directory %s: %s", pszCoverPath, strerror);        nStatus = -1;#endif    }    CPLFree(pszCoverPath);    CPLFree(pszInfoPath);    CPLFree(pszCoverName);    return nStatus;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品99久久久久久| 国产99久久久精品| 欧美丝袜丝交足nylons| 亚洲精品视频在线| 在线视频你懂得一区二区三区| 中文字幕亚洲区| 亚洲欧洲成人精品av97| 日韩美女视频一区| 欧美videos大乳护士334| 中文字幕一区不卡| 麻豆免费精品视频| 成人欧美一区二区三区在线播放| 久久综合九色综合久久久精品综合| 9191国产精品| 欧美va日韩va| 五月天精品一区二区三区| 亚洲图片你懂的| 香蕉久久一区二区不卡无毒影院| 久久66热re国产| 中文字幕乱码一区二区免费| 成人在线视频一区二区| 夜夜嗨av一区二区三区网页| 在线不卡中文字幕| 国产精品自拍在线| 亚洲伦理在线精品| 欧美一卡二卡三卡| 国产精品99久久久| 亚洲一区在线视频观看| 精品国产成人系列| 欧美体内she精高潮| 国产一区三区三区| 亚洲黄色录像片| 欧美大胆人体bbbb| 色呦呦网站一区| 国产一区中文字幕| 亚洲午夜国产一区99re久久| 久久九九久久九九| 欧美日韩国产不卡| 成人中文字幕合集| 青娱乐精品在线视频| 国产精品免费aⅴ片在线观看| 欧美日韩亚洲综合| av中文一区二区三区| 日韩精品视频网| 亚洲免费在线观看视频| 精品国产乱码久久久久久久久| 91女神在线视频| 国产精品亚洲专一区二区三区 | 亚瑟在线精品视频| 国产欧美va欧美不卡在线| 欧美日韩国产首页在线观看| 成人不卡免费av| 久久国产乱子精品免费女| 亚洲乱码国产乱码精品精小说| 精品噜噜噜噜久久久久久久久试看| 色噜噜狠狠色综合中国| 国产99久久久国产精品潘金| 免费av成人在线| 午夜精品久久久| 亚洲精品五月天| 最新久久zyz资源站| 久久精品人人做人人综合| 91精品免费在线观看| 欧美性大战xxxxx久久久| 99国产精品久久久久久久久久久| 国产精品一区二区男女羞羞无遮挡| 爽爽淫人综合网网站| 99综合电影在线视频| 精品999久久久| 91精品国产综合久久久蜜臀粉嫩| 韩国女主播一区| 亚洲第一主播视频| 亚洲三级理论片| 国产精品白丝在线| 欧美精品一区二区在线播放| 日韩欧美国产综合一区| 91麻豆精品国产无毒不卡在线观看 | 91精品国产高清一区二区三区| 国产综合久久久久影院| 亚洲精品亚洲人成人网| 精品成人免费观看| 欧美亚洲免费在线一区| 国产毛片精品视频| 亚洲第一综合色| 国产精品第五页| 日韩欧美中文字幕公布| 色狠狠综合天天综合综合| 狠狠狠色丁香婷婷综合激情| 亚洲综合在线五月| 国产精品女主播av| 精品国产乱码91久久久久久网站| 91福利小视频| 91在线观看地址| 国产91高潮流白浆在线麻豆| 免费久久99精品国产| 亚洲一区二区三区在线| 1024亚洲合集| 欧美激情在线一区二区三区| 日韩视频一区二区三区在线播放| 欧美性猛交xxxx乱大交退制版| 成人丝袜18视频在线观看| 久久精品国产亚洲一区二区三区| 亚洲国产成人91porn| 亚洲欧美另类久久久精品| 国产精品网友自拍| 久久综合中文字幕| 欧美一区二区三区免费在线看| 在线免费观看日韩欧美| 99久免费精品视频在线观看| 粉嫩av亚洲一区二区图片| 国内精品在线播放| 久久精品国产秦先生| 日本欧美加勒比视频| 日韩中文字幕91| 热久久免费视频| 热久久久久久久| 激情小说欧美图片| 韩国女主播一区二区三区| 精品午夜久久福利影院| 激情综合五月婷婷| 韩国视频一区二区| 国产一区二区三区精品视频| 国产精品 欧美精品| 国产99久久久国产精品免费看 | 亚洲日本va在线观看| 成人免费一区二区三区在线观看 | 成人性生交大片免费看中文网站| 国产成人av资源| 成人午夜免费av| 91亚洲国产成人精品一区二区三| 色8久久人人97超碰香蕉987| 欧美性感一类影片在线播放| 91精品免费在线观看| 欧美精品一区二区精品网| 久久精品视频一区二区| 亚洲人成影院在线观看| 亚洲国产日韩一区二区| 亚州成人在线电影| 韩国在线一区二区| 99麻豆久久久国产精品免费 | av中文一区二区三区| 精品视频1区2区| 日韩欧美在线网站| 国产日韩欧美一区二区三区综合| 最好看的中文字幕久久| 亚洲成a天堂v人片| 国内欧美视频一区二区| 一本大道久久精品懂色aⅴ| 欧美亚一区二区| 精品国产123| 亚洲精品国产无天堂网2021| 日韩 欧美一区二区三区| 成人黄色免费短视频| 欧美精品亚洲二区| 久久一二三国产| 亚洲综合久久久久| 精品影视av免费| 色狠狠桃花综合| 久久精品亚洲乱码伦伦中文| 夜色激情一区二区| 国产在线精品一区在线观看麻豆| 91在线云播放| 久久影院视频免费| 亚洲在线中文字幕| 国产成人aaa| 91精品国产综合久久精品麻豆| 欧美国产视频在线| 日韩高清在线电影| 成人h版在线观看| 欧美变态tickle挠乳网站| 亚洲另类春色校园小说| 国产精品影视网| 日韩三级免费观看| 一区二区久久久| 成人高清在线视频| 精品国产免费人成电影在线观看四季| 亚洲美女屁股眼交3| 国产精品资源网| 欧美sm美女调教| 日韩国产一二三区| 欧美天堂一区二区三区| 自拍av一区二区三区| 国产69精品久久777的优势| 日韩免费一区二区| 亚洲18影院在线观看| 在线观看免费一区| 亚洲美女少妇撒尿| 91亚洲大成网污www| 国产精品激情偷乱一区二区∴| 久久精品国产澳门| 欧美一区二区在线不卡| 午夜精品久久久久久久 | 99九九99九九九视频精品| 久久久精品人体av艺术| 精品制服美女久久| 精品电影一区二区| 国产乱人伦精品一区二区在线观看| 日韩一区二区精品葵司在线| 免费在线观看一区| 欧美一区午夜视频在线观看|