本文整理汇总了C++中TABINDFile::AddEntry方法的典型用法代码示例。如果您正苦于以下问题:C++ TABINDFile::AddEntry方法的具体用法?C++ TABINDFile::AddEntry怎么用?C++ TABINDFile::AddEntry使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TABINDFile
的用法示例。
在下文中一共展示了TABINDFile::AddEntry方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddEntry
OGRErr OGRMIAttrIndex::AddEntry( OGRField *psKey, long nFID )
{
GByte *pabyKey = BuildKey( psKey );
if( psKey == NULL )
return OGRERR_FAILURE;
if( poINDFile->AddEntry( iIndex, pabyKey, nFID+1 ) != 0 )
return OGRERR_FAILURE;
else
return OGRERR_NONE;
}
示例2: AddEntry
OGRErr OGRMIAttrIndex::AddEntry( OGRField *psKey, GIntBig nFID )
{
if( psKey == nullptr )
return OGRERR_FAILURE;
if( nFID >= INT_MAX )
return OGRERR_FAILURE;
GByte *pabyKey = BuildKey( psKey );
if( pabyKey == nullptr )
return OGRERR_FAILURE;
if( poINDFile->AddEntry( iIndex, pabyKey, static_cast<int>(nFID)+1 ) != 0 )
return OGRERR_FAILURE;
else
return OGRERR_NONE;
}
示例3: AddEntry
OGRErr OGRMIAttrIndex::AddEntry( OGRField *psKey, GIntBig nFID )
{
if( psKey == NULL )
return OGRERR_FAILURE;
if( nFID >= INT_MAX )
return OGRERR_FAILURE;
GByte *pabyKey = BuildKey( psKey );
if( pabyKey == NULL )
return OGRERR_FAILURE;
if( poINDFile->AddEntry( iIndex, pabyKey, (int)nFID+1 ) != 0 )
return OGRERR_FAILURE;
else
return OGRERR_NONE;
}
示例4: CreateIndex
//.........这里部分代码省略.........
*--------------------------------------------------------------------*/
OGRFeatureDefn *poDefn = poSrcFile->GetLayerDefn();
if ( poDefn == NULL ||
(iField = poDefn->GetFieldIndex(pszField)) == -1 ||
poSrcFile->IsFieldIndexed(iField))
{
printf("Cannot create index: field '%s' not found or is already indexed.\n",
pszField);
poSrcFile->Close();
delete poSrcFile;
return -1;
}
/*---------------------------------------------------------------------
* Things seem OK... open IND file for update
* (Note that TABINDFile automagically adjusts file extension)
*--------------------------------------------------------------------*/
poINDFile = new TABINDFile;
if ( poINDFile->Open(pszSrcFname, "r+", TRUE) != 0 &&
poINDFile->Open(pszSrcFname, "w", TRUE) != 0)
{
printf("Unable to create IND file for %s.\n", pszSrcFname);
delete poINDFile;
poSrcFile->Close();
delete poSrcFile;
return -1;
}
int nNewIndexNo = -1;
OGRFieldDefn *poFieldDefn = poDefn->GetFieldDefn(iField);
TABFieldType eFieldType = poSrcFile->GetNativeFieldType(iField);
if (poFieldDefn == NULL ||
(nNewIndexNo = poINDFile->CreateIndex(eFieldType,
poFieldDefn->GetWidth()) ) < 1)
{
// Failed... an error has already been reported.
delete poINDFile;
poSrcFile->Close();
delete poSrcFile;
return -1;
}
printf("Index number %d will be created for field %s...\n\n"
"This program does not update the TAB header file (yet!) so you \n"
"should edit %s and add 'Index %d' at the end of the definition \n"
"of field %s.\n\n",
nNewIndexNo, pszField, pszSrcFname, nNewIndexNo, pszField);
/*---------------------------------------------------------------------
* Add index entries until we reach EOF
*--------------------------------------------------------------------*/
nFeatureId = -1;
while ( (nFeatureId = poSrcFile->GetNextFeatureId(nFeatureId)) != -1 )
{
poFeature = poSrcFile->GetFeatureRef(nFeatureId);
if (poFeature)
{
GByte *pKey = NULL;
switch(eFieldType)
{
case TABFChar:
pKey = poINDFile->BuildKey(nNewIndexNo,
poFeature->GetFieldAsString(iField));
break;
case TABFInteger:
case TABFSmallInt:
pKey = poINDFile->BuildKey(nNewIndexNo,
poFeature->GetFieldAsInteger(iField));
break;
case TABFDecimal:
case TABFFloat:
case TABFLogical:
pKey = poINDFile->BuildKey(nNewIndexNo,
poFeature->GetFieldAsDouble(iField));
break;
default:
case TABFDate:
CPLAssert(FALSE); // Unsupported for now.
}
if (poINDFile->AddEntry(nNewIndexNo, pKey, nFeatureId) != 0)
return -1;
}
else
break; // GetFeatureRef() failed: Abort the loop
}
/*---------------------------------------------------------------------
* Cleanup and exit.
*--------------------------------------------------------------------*/
poINDFile->Close();
delete poINDFile;
poSrcFile->Close();
delete poSrcFile;
MITABFreeCoordSysTable();
return 0;
}