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

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

?? ogrfeaturequery.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
            else
            {
                return EQUAL(psField->String,op->string_value);
            }
          case SWQ_NE:
            if (psField->Set.nMarker1 == OGRUnsetMarker
                && psField->Set.nMarker2 == OGRUnsetMarker )
            {
                return (op->string_value[0] != '\0');
            }
            else
            {
                return !EQUAL(psField->String,op->string_value);
            }

          case SWQ_LT:
            if (psField->Set.nMarker1 == OGRUnsetMarker
                && psField->Set.nMarker2 == OGRUnsetMarker )
            {
                return (op->string_value[0] != '\0');
            }
            else
            {
                return strcmp(psField->String,op->string_value) < 0;
            }
          case SWQ_GT:
            if (psField->Set.nMarker1 == OGRUnsetMarker
                && psField->Set.nMarker2 == OGRUnsetMarker )
            {
                return (op->string_value[0] != '\0');
            }
            else
            {
                return strcmp(psField->String,op->string_value) > 0;
            }
          case SWQ_LE:
            if (psField->Set.nMarker1 == OGRUnsetMarker
                && psField->Set.nMarker2 == OGRUnsetMarker )
            {
                return (op->string_value[0] != '\0');
            }
            else
            {
                return strcmp(psField->String,op->string_value) <= 0;
            }
          case SWQ_GE:
            if (psField->Set.nMarker1 == OGRUnsetMarker
                && psField->Set.nMarker2 == OGRUnsetMarker )
            {
                return (op->string_value[0] != '\0');
            }
            else
            {
                return strcmp(psField->String,op->string_value) >= 0;
            }

          case SWQ_ISNULL:
            return !poFeature->IsFieldSet( op->field_index );

          case SWQ_LIKE:
            if (psField->Set.nMarker1 != OGRUnsetMarker
                || psField->Set.nMarker2 != OGRUnsetMarker )
                return swq_test_like(psField->String, op->string_value);
            else
                return FALSE;

          case SWQ_IN:
          {
              const char *pszSrc;

              if( !poFeature->IsFieldSet(op->field_index) )
                  return FALSE;
              
              pszSrc = op->string_value;
              while( *pszSrc != '\0' )
              {
                  if( EQUAL(pszSrc,psField->String) )
                      return TRUE;
                  pszSrc += strlen(pszSrc) + 1;
              }

              return FALSE;
          }

          default:
            CPLDebug( "OGRFeatureQuery", 
                      "Illegal operation (%d) on string field.",
                      op->operation );
            return FALSE;
        }

      case SWQ_OTHER:
        switch( op->operation )
        {
          case SWQ_ISNULL:
            return !poFeature->IsFieldSet( op->field_index );

          default:
            CPLDebug( "OGRFeatureQuery", 
                      "Illegal operation (%d) on list or binary field.",
                      op->operation );
            return FALSE;
        }

      default:
        assert( FALSE );
        return FALSE;
    }
}

/************************************************************************/
/*                              Evaluate()                              */
/************************************************************************/

int OGRFeatureQuery::Evaluate( OGRFeature *poFeature )

{
    if( pSWQExpr == NULL )
        return FALSE;

    return swq_expr_evaluate( (swq_expr *) pSWQExpr, 
                              (swq_op_evaluator) OGRFeatureQueryEvaluator, 
                              (void *) poFeature );
}

/************************************************************************/
/*                       EvaluateAgainstIndices()                       */
/*                                                                      */
/*      Attempt to return a list of FIDs matching the given             */
/*      attribute query conditions utilizing attribute indices.         */
/*      Returns NULL if the result cannot be computed from the          */
/*      available indices, or an "OGRNullFID" terminated list of        */
/*      FIDs if it can.                                                 */
/*                                                                      */
/*      For now we only support equality tests on a single indexed      */
/*      attribute field.  Eventually we should make this support        */
/*      multi-part queries with ranges.                                 */
/************************************************************************/

long *OGRFeatureQuery::EvaluateAgainstIndices( OGRLayer *poLayer, 
                                               OGRErr *peErr )

{
    swq_expr *psExpr = (swq_expr *) pSWQExpr;
    OGRAttrIndex *poIndex;

    if( peErr != NULL )
        *peErr = OGRERR_NONE;

/* -------------------------------------------------------------------- */
/*      Does the expression meet our requirements?  Do we have an       */
/*      index on the targetted field?                                   */
/* -------------------------------------------------------------------- */
    if( psExpr == NULL || psExpr->operation != SWQ_EQ 
        || poLayer->GetIndex() == NULL )
        return NULL;

    poIndex = poLayer->GetIndex()->GetFieldIndex( psExpr->field_index );
    if( poIndex == NULL )
        return NULL;

/* -------------------------------------------------------------------- */
/*      OK, we have an index, now we need to query it.                  */
/* -------------------------------------------------------------------- */
    OGRField sValue;
    OGRFieldDefn *poFieldDefn;

    poFieldDefn = poLayer->GetLayerDefn()->GetFieldDefn(psExpr->field_index);

    switch( poFieldDefn->GetType() )
    {
      case OFTInteger:
        sValue.Integer = psExpr->int_value;
        break;

      case OFTReal:
        sValue.Real = psExpr->float_value;
        break;

      case OFTString:
        sValue.String = psExpr->string_value;
        break;

      default:
        CPLAssert( FALSE );
        return NULL;
    }

    return poIndex->GetAllMatches( &sValue );
}

/************************************************************************/
/*                         OGRFieldCollector()                          */
/*                                                                      */
/*      Helper function for recursing through tree to satisfy           */
/*      GetUsedFields().                                                */
/************************************************************************/

char **OGRFeatureQuery::FieldCollector( void *pBareOp, 
                                        char **papszList )

{
    swq_field_op *op = (swq_field_op *) pBareOp;

/* -------------------------------------------------------------------- */
/*      References to tables other than the primarily are currently     */
/*      unsupported. Error out.                                         */
/* -------------------------------------------------------------------- */
    if( op->table_index != 0 )
    {
        CSLDestroy( papszList );
        return NULL;
    }

/* -------------------------------------------------------------------- */
/*      Add the field name into our list if it is not already there.    */
/* -------------------------------------------------------------------- */
    const char *pszFieldName;

    if( op->field_index >= poTargetDefn->GetFieldCount()
        && op->field_index < poTargetDefn->GetFieldCount() + SPECIAL_FIELD_COUNT) 
        pszFieldName = SpecialFieldNames[op->field_index];
    else if( op->field_index >= 0 
             && op->field_index < poTargetDefn->GetFieldCount() )
        pszFieldName = 
            poTargetDefn->GetFieldDefn(op->field_index)->GetNameRef();
    else
    {
        CSLDestroy( papszList );
        return NULL;
    }

    if( CSLFindString( papszList, pszFieldName ) == -1 )
        papszList = CSLAddString( papszList, pszFieldName );

/* -------------------------------------------------------------------- */
/*      Add in fields from subexpressions.                              */
/* -------------------------------------------------------------------- */
    if( op->first_sub_expr != NULL )
        papszList = FieldCollector( op->first_sub_expr, papszList );
    if( op->second_sub_expr != NULL )
        papszList = FieldCollector( op->second_sub_expr, papszList );

    return papszList;
}

/************************************************************************/
/*                           GetUsedFields()                            */
/************************************************************************/

/**
 * Returns lists of fields in expression.
 *
 * All attribute fields are used in the expression of this feature
 * query are returned as a StringList of field names.  This function would
 * primarily be used within drivers to recognise special case conditions
 * depending only on attribute fields that can be very efficiently 
 * fetched. 
 *
 * NOTE: If any fields in the expression are from tables other than the
 * primary table then NULL is returned indicating an error.  In succesful
 * use, no non-empty expression should return an empty list.
 *
 * @return list of field names.  Free list with CSLDestroy() when no longer
 * required.
 */

char **OGRFeatureQuery::GetUsedFields( )

{
    if( pSWQExpr == NULL )
        return NULL;

    
    return FieldCollector( pSWQExpr, NULL );
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产三级电影在线观看| 99国产精品久久久| 精品美女一区二区| 狠狠色丁香婷婷综合久久片| 亚洲免费av在线| 欧美艳星brazzers| 日韩国产精品久久久久久亚洲| 欧美一区二区三区在线视频| 韩国一区二区视频| 国产精品久久久久婷婷二区次| av毛片久久久久**hd| 亚洲自拍偷拍九九九| 欧美一级夜夜爽| 国产一区 二区 三区一级| 欧美国产精品一区二区三区| 97国产一区二区| 爽好多水快深点欧美视频| 欧美成人伊人久久综合网| 顶级嫩模精品视频在线看| 亚洲精品国产a久久久久久| 4438x亚洲最大成人网| 国产夫妻精品视频| 亚洲激情自拍视频| xfplay精品久久| 91国产福利在线| 极品尤物av久久免费看| 亚洲欧美激情小说另类| 欧美一级片在线观看| 国产成人免费9x9x人网站视频| 一区二区高清视频在线观看| 日韩美女在线视频| 97久久久精品综合88久久| 免费高清视频精品| 亚洲精品五月天| 久久综合色之久久综合| 欧美视频一二三区| 成人激情开心网| 久久国产精品99久久久久久老狼| 亚洲色图色小说| 久久色成人在线| 欧美日韩不卡一区二区| 成人av在线资源网站| 激情六月婷婷久久| 日本一道高清亚洲日美韩| 136国产福利精品导航| 久久免费午夜影院| 777xxx欧美| 欧美综合亚洲图片综合区| 高清shemale亚洲人妖| 久色婷婷小香蕉久久| 亚洲香蕉伊在人在线观| 中文字幕亚洲精品在线观看| 久久免费看少妇高潮| 欧美精品vⅰdeose4hd| 在线免费精品视频| av中文字幕亚洲| 国产不卡高清在线观看视频| 麻豆精品国产传媒mv男同| 一级中文字幕一区二区| 亚洲欧美日本在线| 国产精品久久久久影院老司| 久久久综合精品| 欧美v日韩v国产v| 91精品国产综合久久香蕉麻豆| 欧美色窝79yyyycom| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美日韩国产小视频在线观看| 成人蜜臀av电影| 成人午夜在线播放| 国产精品77777竹菊影视小说| 久久国产精品99久久人人澡| 欧美午夜理伦三级在线观看| 96av麻豆蜜桃一区二区| 波多野洁衣一区| 成人a级免费电影| 99久久久精品| 91论坛在线播放| 91在线高清观看| 91免费小视频| 91麻豆自制传媒国产之光| 91在线观看免费视频| 在线免费不卡视频| 欧美色爱综合网| 91精品国产综合久久久久久久久久| 欧美另类久久久品| 91精品国产综合久久福利软件| 日韩一区二区三区三四区视频在线观看| 欧美剧在线免费观看网站| 欧美一区二区在线视频| 欧美videos大乳护士334| 久久久久久97三级| 国产精品久久久久三级| 亚洲美女屁股眼交| 午夜影视日本亚洲欧洲精品| 日韩精品免费专区| 紧缚奴在线一区二区三区| 高潮精品一区videoshd| 日本韩国欧美三级| 在线电影院国产精品| 精品捆绑美女sm三区| 国产精品免费久久久久| 夜夜精品浪潮av一区二区三区| 午夜精品一区二区三区三上悠亚| 青青草一区二区三区| 国产成人日日夜夜| 91久久精品一区二区| 91精品国产丝袜白色高跟鞋| 久久久天堂av| 亚洲综合色噜噜狠狠| 免费高清成人在线| 99re这里只有精品首页| 欧美一级二级三级蜜桃| 中文字幕精品一区二区三区精品| 亚洲国产精品尤物yw在线观看| 国产一区二区三区在线看麻豆| 99免费精品视频| 欧美一区二区三区影视| 国产精品美女久久久久久久| 亚洲狠狠爱一区二区三区| 国产精品99久久久久久宅男| 91久久国产最好的精华液| 日韩欧美中文一区| 亚洲摸摸操操av| 狠狠色丁香久久婷婷综| 色综合色狠狠天天综合色| 亚洲精品一区二区三区四区高清| 亚洲免费电影在线| 黄页网站大全一区二区| 精品视频在线免费| 国产精品久久夜| 久久精品国产99| 欧美日韩在线直播| 国产精品久久久久久亚洲伦| 麻豆精品一区二区| 欧美性色欧美a在线播放| 欧美国产国产综合| 久久成人久久鬼色| 欧美午夜寂寞影院| 成人伦理片在线| 欧美一级二级在线观看| 亚洲综合激情网| 91浏览器入口在线观看| 中文字幕免费一区| 国模无码大尺度一区二区三区| 8x8x8国产精品| 亚洲一区在线电影| 91捆绑美女网站| 国产精品美女久久久久久久久| 精品一区二区三区的国产在线播放 | 免费欧美在线视频| 在线观看欧美黄色| 亚洲三级免费电影| 成人丝袜18视频在线观看| 久久综合色天天久久综合图片| 日本不卡免费在线视频| 欧美色欧美亚洲另类二区| 亚洲主播在线播放| 色乱码一区二区三区88| 亚洲色图丝袜美腿| 91捆绑美女网站| 亚洲精品国产a| 欧美系列一区二区| 亚洲成av人片在www色猫咪| 欧美视频完全免费看| 亚洲永久精品国产| 欧美少妇性性性| 亚洲成人1区2区| 4438x成人网最大色成网站| 日韩电影在线观看电影| 日韩一区国产二区欧美三区| 欧美a一区二区| 精品盗摄一区二区三区| 国产剧情在线观看一区二区| 国产午夜一区二区三区| 成+人+亚洲+综合天堂| 亚洲欧洲精品天堂一级| 欧美亚洲自拍偷拍| 水野朝阳av一区二区三区| 日韩美女在线视频 | 国产欧美日韩精品一区| www.欧美精品一二区| 亚洲男人都懂的| 欧美日韩国产乱码电影| 乱一区二区av| 欧美激情一区二区| 色一情一乱一乱一91av| 强制捆绑调教一区二区| 国产亚洲短视频| 91黄色免费看| 蜜桃传媒麻豆第一区在线观看| 久久久久免费观看| 色一情一伦一子一伦一区| 日韩精品亚洲专区| 久久这里只精品最新地址| 99综合影院在线| 日本aⅴ免费视频一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 91影视在线播放| 久久狠狠亚洲综合| 国产精品入口麻豆原神|