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

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

?? ogr_miattrind.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************** * $Id: ogr_miattrind.cpp 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  OpenGIS Simple Features Reference Implementation * Purpose:  Implements interface to MapInfo .ID files used as attribute *           indexes.   * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2003, Frank Warmerdam * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/#include "ogr_attrind.h"#include "mitab/mitab_priv.h"#include "cpl_minixml.h"CPL_CVSID("$Id: ogr_miattrind.cpp 10646 2007-01-18 02:38:10Z warmerdam $");/************************************************************************//*                            OGRMIAttrIndex                            *//*                                                                      *//*      MapInfo .ID implementation of access to one fields              *//*      indexing.                                                       *//************************************************************************/class OGRMILayerAttrIndex;class OGRMIAttrIndex : public OGRAttrIndex{public:    int         iIndex;    TABINDFile  *poINDFile;    OGRMILayerAttrIndex *poLIndex;    OGRFieldDefn *poFldDefn;    int         iField;                OGRMIAttrIndex( OGRMILayerAttrIndex *, int iIndex, int iField);               ~OGRMIAttrIndex();    GByte      *BuildKey( OGRField *psKey );    long        GetFirstMatch( OGRField *psKey );    long       *GetAllMatches( OGRField *psKey );    OGRErr      AddEntry( OGRField *psKey, long nFID );    OGRErr      RemoveEntry( OGRField *psKey, long nFID );    OGRErr      Clear();};/************************************************************************//* ==================================================================== *//*                         OGRMILayerAttrIndex                          *//*                                                                      *//*      MapInfo .ID specific implementation of a layer attribute        *//*      index.                                                          *//* ==================================================================== *//************************************************************************/class OGRMILayerAttrIndex : public OGRLayerAttrIndex{public:    TABINDFile  *poINDFile;    int         nIndexCount;    OGRMIAttrIndex **papoIndexList;    char        *pszMetadataFilename;    char        *pszMIINDFilename;                    OGRMILayerAttrIndex();    virtual     ~OGRMILayerAttrIndex();    /* base class virtual methods */    OGRErr      Initialize( const char *pszIndexPath, OGRLayer * );    OGRErr      CreateIndex( int iField );    OGRErr      DropIndex( int iField );    OGRErr      IndexAllFeatures( int iField = -1 );    OGRErr      AddToIndex( OGRFeature *poFeature, int iField = -1 );    OGRErr      RemoveFromIndex( OGRFeature *poFeature );    OGRAttrIndex *GetFieldIndex( int iField );    /* custom to OGRMILayerAttrIndex */    OGRErr      SaveConfigToXML();    OGRErr      LoadConfigFromXML();    void        AddAttrInd( int iField, int iINDIndex );    OGRLayer   *GetLayer() { return poLayer; }};/************************************************************************//*                        OGRMILayerAttrIndex()                         *//************************************************************************/OGRMILayerAttrIndex::OGRMILayerAttrIndex(){    poINDFile = NULL;    nIndexCount = 0;    papoIndexList = NULL;}/************************************************************************//*                        ~OGRMILayerAttrIndex()                        *//************************************************************************/OGRMILayerAttrIndex::~OGRMILayerAttrIndex(){    if( poINDFile != NULL )    {        poINDFile->Close();        delete poINDFile;        poINDFile = NULL;    }    for( int i = 0; i < nIndexCount; i++ )        delete papoIndexList[i];    CPLFree( papoIndexList );    CPLFree( pszMIINDFilename );    CPLFree( pszMetadataFilename );}/************************************************************************//*                             Initialize()                             *//************************************************************************/OGRErr OGRMILayerAttrIndex::Initialize( const char *pszIndexPathIn,                                         OGRLayer *poLayerIn ){    if( poLayerIn == poLayer )        return OGRERR_NONE;/* -------------------------------------------------------------------- *//*      Capture input information and form static pathnames.            *//* -------------------------------------------------------------------- */    poLayer = poLayerIn;    pszIndexPath = CPLStrdup( pszIndexPathIn );        pszMetadataFilename = CPLStrdup(        CPLResetExtension( pszIndexPathIn, "idm" ) );        pszMIINDFilename = CPLStrdup(CPLResetExtension( pszIndexPathIn, "ind" ));/* -------------------------------------------------------------------- *//*      If a metadata file already exists, load it.                     *//* -------------------------------------------------------------------- */    OGRErr eErr;    VSIStatBuf sStat;    if( VSIStat( pszMetadataFilename, &sStat ) == 0 )    {        eErr = LoadConfigFromXML();        if( eErr != OGRERR_NONE )            return eErr;    }    return OGRERR_NONE;}/************************************************************************//*                         LoadConfigFromXML()                          *//************************************************************************/OGRErr OGRMILayerAttrIndex::LoadConfigFromXML(){    FILE *fp;    int  nXMLSize;    char *pszRawXML;    CPLAssert( poINDFile == NULL );/* -------------------------------------------------------------------- *//*      Read the XML file.                                              *//* -------------------------------------------------------------------- */    fp = VSIFOpen( pszMetadataFilename, "rb" );    if( fp == NULL )        return OGRERR_NONE;    VSIFSeek( fp, 0, SEEK_END );    nXMLSize = VSIFTell( fp );    VSIFSeek( fp, 0, SEEK_SET );    pszRawXML = (char *) CPLMalloc(nXMLSize+1);    pszRawXML[nXMLSize] = '\0';    VSIFRead( pszRawXML, nXMLSize, 1, fp );    VSIFClose( fp );/* -------------------------------------------------------------------- *//*      Parse the XML.                                                  *//* -------------------------------------------------------------------- */    CPLXMLNode *psRoot = CPLParseXMLString( pszRawXML );    CPLFree( pszRawXML );    if( psRoot == NULL )        return OGRERR_FAILURE;/* -------------------------------------------------------------------- *//*      Open the index file.                                            *//* -------------------------------------------------------------------- */    poINDFile = new TABINDFile();    if( poINDFile->Open( pszMetadataFilename, "r+" ) != 0 )    {        CPLDestroyXMLNode( psRoot );        CPLError( CE_Failure, CPLE_OpenFailed,                  "Failed to open index file %s.",                   pszMIINDFilename );        return OGRERR_FAILURE;    }/* -------------------------------------------------------------------- *//*      Process each attrindex.                                         *//* -------------------------------------------------------------------- */    CPLXMLNode *psAttrIndex;    for( psAttrIndex = psRoot->psChild;          psAttrIndex != NULL;          psAttrIndex = psAttrIndex->psNext )    {        int iField, iIndexIndex;        if( psAttrIndex->eType != CXT_Element             || !EQUAL(psAttrIndex->pszValue,"OGRMIAttrIndex") )            continue;        iField = atoi(CPLGetXMLValue(psAttrIndex,"FieldIndex","-1"));        iIndexIndex = atoi(CPLGetXMLValue(psAttrIndex,"IndexIndex","-1"));        if( iField == -1 || iIndexIndex == -1 )        {            CPLError( CE_Warning, CPLE_AppDefined,                       "Skipping corrupt OGRMIAttrIndex entry." );            continue;        }        AddAttrInd( iField, iIndexIndex );    }    CPLDestroyXMLNode( psRoot );    CPLDebug( "OGR", "Restored %d field indexes for layer %s from %s on %s.",              nIndexCount, poLayer->GetLayerDefn()->GetName(),               pszMetadataFilename, pszMIINDFilename );    return OGRERR_NONE;}/************************************************************************//*                          SaveConfigToXML()                           *//************************************************************************/OGRErr OGRMILayerAttrIndex::SaveConfigToXML(){    if( nIndexCount == 0 )        return OGRERR_NONE;/* -------------------------------------------------------------------- *//*      Create the XML tree corresponding to this layer.                *//* -------------------------------------------------------------------- */    CPLXMLNode *psRoot;    psRoot = CPLCreateXMLNode( NULL, CXT_Element, "OGRMILayerAttrIndex" );    CPLCreateXMLElementAndValue( psRoot, "MIIDFilename",                                  CPLGetFilename( pszMIINDFilename ) );        for( int i = 0; i < nIndexCount; i++ )    {        OGRMIAttrIndex *poAI = papoIndexList[i];        CPLXMLNode *psIndex;        psIndex = CPLCreateXMLNode( psRoot, CXT_Element, "OGRMIAttrIndex" );        CPLCreateXMLElementAndValue( psIndex, "FieldIndex",                                      CPLSPrintf( "%d", poAI->iField ) );                                             CPLCreateXMLElementAndValue( psIndex, "FieldName",                                      poLayer->GetLayerDefn()->GetFieldDefn(poAI->iField)->GetNameRef() );                                             CPLCreateXMLElementAndValue( psIndex, "IndexIndex",                                      CPLSPrintf( "%d", poAI->iIndex ) );    }/* -------------------------------------------------------------------- *//*      Save it.                                                        *//* -------------------------------------------------------------------- */    char *pszRawXML = CPLSerializeXMLTree( psRoot );    FILE *fp;    CPLDestroyXMLNode( psRoot );    fp = VSIFOpen( pszMetadataFilename, "wb" );    if( fp == NULL )    {        CPLError( CE_Failure, CPLE_OpenFailed,                   "Failed to pen `%s' for write.",                   pszMetadataFilename );        CPLFree( pszRawXML );        return OGRERR_FAILURE;    }    VSIFWrite( pszRawXML, 1, strlen(pszRawXML), fp );    VSIFClose( fp );    CPLFree( pszRawXML );        return OGRERR_NONE;}/************************************************************************//*                          IndexAllFeatures()                          *//************************************************************************/OGRErr OGRMILayerAttrIndex::IndexAllFeatures( int iField ){    OGRFeature *poFeature;    poLayer->ResetReading();        while( (poFeature = poLayer->GetNextFeature()) != NULL )    {        OGRErr eErr = AddToIndex( poFeature, iField );                delete poFeature;        if( eErr != CE_None )            return eErr;    }    poLayer->ResetReading();    return OGRERR_NONE;}/************************************************************************//*                            CreateIndex()                             *//*                                                                      *//*      Create an index corresponding to the indicated field, but do    *//*      not populate it.  Use IndexAllFeatures() for that.              *//************************************************************************/OGRErr OGRMILayerAttrIndex::CreateIndex( int iField ){/* -------------------------------------------------------------------- *//*      Do we have an open .ID file yet?  If not, create it now.        *//* -------------------------------------------------------------------- */    if( poINDFile == NULL )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成年人网站在线观看| 欧美亚洲动漫制服丝袜| 亚洲自拍偷拍麻豆| 欧美美女直播网站| 成人av动漫网站| 日日夜夜一区二区| 国产色婷婷亚洲99精品小说| 欧洲av一区二区嗯嗯嗯啊| 国产综合久久久久久鬼色| 一区免费观看视频| 精品久久国产97色综合| 色www精品视频在线观看| 国产很黄免费观看久久| 亚洲国产精品久久人人爱| 国产精品午夜免费| 26uuu精品一区二区在线观看| 欧美日韩国产高清一区二区三区 | 国产日韩精品视频一区| 在线亚洲欧美专区二区| 国产麻豆91精品| 午夜精品视频一区| 亚洲六月丁香色婷婷综合久久| 精品免费国产一区二区三区四区| 99精品视频一区二区三区| 国产成人免费在线视频| 亚洲一区二区三区小说| 久久综合久久99| 欧美男同性恋视频网站| 色婷婷综合久色| 91在线云播放| av中文字幕亚洲| 91偷拍与自偷拍精品| 成人成人成人在线视频| 成人毛片在线观看| 99精品国产视频| 岛国一区二区三区| 亚洲人成小说网站色在线| 中文字幕欧美国产| 亚洲精品国产精华液| 亚洲成在人线免费| 麻豆国产精品视频| av在线播放不卡| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲综合成人在线| 青青草视频一区| 高清国产一区二区| 欧美一区二区三区影视| 欧美国产精品一区二区三区| 一区二区三区精品久久久| 激情综合网天天干| 成人三级伦理片| 日韩视频一区二区三区在线播放| 精品国产人成亚洲区| 亚洲最大的成人av| 久久精品国产亚洲a| 91啦中文在线观看| 久久久天堂av| 麻豆91在线观看| 91福利社在线观看| 中文字幕中文字幕在线一区| 蜜臀久久99精品久久久画质超高清| 成人毛片视频在线观看| 91精品国产一区二区三区蜜臀 | 国产一区二区三区四区在线观看| 国产在线播精品第三| 91在线视频在线| 国产精品毛片无遮挡高清| 国产一区久久久| 日韩精品中文字幕一区二区三区 | 亚洲欧洲美洲综合色网| 激情小说欧美图片| 精品理论电影在线观看| 蜜臂av日日欢夜夜爽一区| 欧美丰满高潮xxxx喷水动漫| 亚洲午夜免费福利视频| 欧美日韩一区中文字幕| 亚洲va国产天堂va久久en| 欧美一区二区黄色| 久热成人在线视频| 久久久99精品久久| 成人动漫一区二区| 一卡二卡欧美日韩| 欧美日韩免费电影| 精品无人区卡一卡二卡三乱码免费卡 | 国产一区二区看久久| 日韩主播视频在线| 精品国产一区二区国模嫣然| 国产精品一卡二| 国产精品国产三级国产aⅴ原创| 91一区二区三区在线观看| 亚洲一区自拍偷拍| 中文字幕欧美三区| 精品久久久久久综合日本欧美| 成人一级黄色片| 狠狠色丁香婷婷综合久久片| 亚洲狠狠爱一区二区三区| 久久久国产精华| 日本道在线观看一区二区| 奇米色一区二区| 欧美国产日韩亚洲一区| 不卡在线观看av| 视频一区二区中文字幕| 久久只精品国产| 欧美日韩视频在线观看一区二区三区 | 91在线一区二区| 精品一区二区在线免费观看| 亚洲狼人国产精品| 国产蜜臀97一区二区三区| 欧美一级爆毛片| 欧美日韩一区在线| 国产盗摄精品一区二区三区在线 | 日本中文在线一区| 亚洲色图欧美激情| 欧美—级在线免费片| 欧美不卡视频一区| 6080yy午夜一二三区久久| 91福利在线免费观看| 成人动漫中文字幕| 成人短视频下载| 成人小视频免费观看| 国产电影一区在线| 国产一区二区日韩精品| 精品亚洲成a人| 国产一区二区按摩在线观看| 国产精品自拍网站| 国产成人免费在线观看| 国产精品主播直播| 成人网男人的天堂| 国产91在线看| 成人激情免费网站| 94-欧美-setu| 欧美三级在线播放| 91精品国产黑色紧身裤美女| 欧美人与性动xxxx| 777xxx欧美| 91精品国产色综合久久久蜜香臀| 宅男噜噜噜66一区二区66| 欧美日韩在线直播| 欧美刺激脚交jootjob| 国产三区在线成人av| 777色狠狠一区二区三区| 日韩欧美一级在线播放| 久久久久久亚洲综合影院红桃| 中文字幕欧美日韩一区| 亚洲第一综合色| 国产乱人伦偷精品视频不卡| 色狠狠色狠狠综合| 色婷婷狠狠综合| 精品99999| 亚洲国产日韩av| 国产91精品免费| 欧美一区二区视频网站| 久久精品欧美一区二区三区麻豆 | 一区二区三区四区精品在线视频| 午夜精品在线看| 97久久超碰精品国产| 一本到不卡免费一区二区| 欧美精品一区二区三区很污很色的| 国产精品久久99| 国产91丝袜在线播放九色| 欧美日韩国产小视频| 亚洲欧洲另类国产综合| 国产一区二区三区四区五区入口| 亚洲一区二区三区小说| 不卡的av电影| 国产欧美一区二区精品婷婷| 视频一区国产视频| 欧美视频精品在线观看| 日韩一区在线播放| 成人aa视频在线观看| 欧美久久久一区| 樱花影视一区二区| 91国产免费看| 亚洲电影在线播放| 色94色欧美sute亚洲线路一久| 成人免费在线视频观看| 成人国产一区二区三区精品| 久久久激情视频| 成人国产电影网| 亚洲精品一区二区三区福利| 精品亚洲欧美一区| 国产午夜精品一区二区三区视频 | 95精品视频在线| 亚洲欧洲日本在线| 色婷婷综合激情| 亚洲精品中文在线观看| 日本中文字幕一区二区视频| 成人av在线观| 1024亚洲合集| 在线观看国产精品网站| 一区二区三区不卡视频| 欧美日韩国产精品自在自线| 丝袜美腿一区二区三区| 久久一区二区三区四区| 色综合久久99| 日韩国产在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 成人免费毛片嘿嘿连载视频| 夜夜嗨av一区二区三区四季av| 日韩视频免费观看高清完整版在线观看 |