本文整理汇总了C++中CPLString::size方法的典型用法代码示例。如果您正苦于以下问题:C++ CPLString::size方法的具体用法?C++ CPLString::size怎么用?C++ CPLString::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPLString
的用法示例。
在下文中一共展示了CPLString::size方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckExtensionConsistency
void CheckExtensionConsistency(const char* pszDestFilename,
const char* pszDriverName)
{
CPLString osExt = CPLGetExtension(pszDestFilename);
if (osExt.size())
{
GDALDriverH hThisDrv = GDALGetDriverByName(pszDriverName);
if( hThisDrv != NULL && DoesDriverHandleExtension(hThisDrv, osExt) )
return;
int nDriverCount = GDALGetDriverCount();
CPLString osConflictingDriverList;
for(int i=0;i<nDriverCount;i++)
{
GDALDriverH hDriver = GDALGetDriver(i);
if( hDriver != hThisDrv && DoesDriverHandleExtension(hDriver, osExt) )
{
if (osConflictingDriverList.size())
osConflictingDriverList += ", ";
osConflictingDriverList += GDALGetDriverShortName(hDriver);
}
}
if (osConflictingDriverList.size())
{
fprintf(stderr,
"Warning: The target file has a '%s' extension, which is normally used by the %s driver%s,\n"
"but the requested output driver is %s. Is it really what you want ?\n",
osExt.c_str(),
osConflictingDriverList.c_str(),
strchr(osConflictingDriverList.c_str(), ',') ? "s" : "",
pszDriverName);
}
}
}
示例2: WriteValue
int OGRDXFWriterLayer::WriteValue( int nCode, int nValue )
{
CPLString osLinePair;
osLinePair.Printf( "%3d\n%d\n", nCode, nValue );
return VSIFWriteL( osLinePair.c_str(),
1, osLinePair.size(), fp ) == osLinePair.size();
}
示例3: osStatement
/*
* ExecuteSQL()
*/
OGRLayer *OGRNGWDataset::ExecuteSQL( const char *pszStatement,
OGRGeometry *poSpatialFilter, const char *pszDialect )
{
// Clean statement string.
CPLString osStatement(pszStatement);
osStatement = osStatement.Trim().replaceAll(" ", " ");
if( STARTS_WITH_CI(osStatement.c_str(), "DELLAYER:") )
{
CPLString osLayerName = osStatement.substr(9);
if( osLayerName.endsWith(";") )
{
osLayerName = osLayerName.substr(0, osLayerName.size() - 1);
osLayerName.Trim();
}
CPLDebug("NGW", "Delete layer with name %s.", osLayerName.c_str());
for( int iLayer = 0; iLayer < nLayers; ++iLayer )
{
if( EQUAL(papoLayers[iLayer]->GetName(), osLayerName.c_str() ) )
{
DeleteLayer( iLayer );
break;
}
}
return nullptr;
}
if( STARTS_WITH_CI(osStatement.c_str(), "DELETE FROM") )
{
// Get layer name from pszStatement DELETE FROM layer;.
CPLString osLayerName = osStatement.substr(12);
if( osLayerName.endsWith(";") )
{
osLayerName = osLayerName.substr(0, osLayerName.size() - 1);
osLayerName.Trim();
}
CPLDebug("NGW", "Delete features from layer with name %s.", osLayerName.c_str());
OGRNGWLayer *poLayer = static_cast<OGRNGWLayer*>(GetLayerByName(osLayerName));
if( poLayer )
{
poLayer->DeleteAllFeatures();
}
else
{
CPLError(CE_Failure, CPLE_AppDefined, "Unknown layer : %s",
osLayerName.c_str());
}
return nullptr;
}
return GDALDataset::ExecuteSQL(pszStatement, poSpatialFilter, pszDialect);
}
示例4: CheckExtensionConsistency
void CheckExtensionConsistency(const char* pszDestFilename,
const char* pszDriverName)
{
char* pszDestExtension = CPLStrdup(CPLGetExtension(pszDestFilename));
if (pszDestExtension[0] != '\0')
{
int nDriverCount = GDALGetDriverCount();
CPLString osConflictingDriverList;
for(int i=0;i<nDriverCount;i++)
{
GDALDriverH hDriver = GDALGetDriver(i);
const char* pszDriverExtensions =
GDALGetMetadataItem( hDriver, GDAL_DMD_EXTENSIONS, NULL );
if( pszDriverExtensions )
{
char** papszTokens = CSLTokenizeString( pszDriverExtensions );
for(int j=0; papszTokens[j]; j++)
{
const char* pszDriverExtension = papszTokens[j];
if (EQUAL(pszDestExtension, pszDriverExtension))
{
if (GDALGetDriverByName(pszDriverName) != hDriver)
{
if (osConflictingDriverList.size())
osConflictingDriverList += ", ";
osConflictingDriverList += GDALGetDriverShortName(hDriver);
}
else
{
/* If the request driver allows the used extension, then */
/* just stop iterating now */
osConflictingDriverList = "";
break;
}
}
}
CSLDestroy(papszTokens);
}
}
if (osConflictingDriverList.size())
{
fprintf(stderr,
"Warning: The target file has a '%s' extension, which is normally used by the %s driver%s,\n"
"but the requested output driver is %s. Is it really what you want ?\n",
pszDestExtension,
osConflictingDriverList.c_str(),
strchr(osConflictingDriverList.c_str(), ',') ? "s" : "",
pszDriverName);
}
}
CPLFree(pszDestExtension);
}
示例5: GetRealExtension
CPLString OGRCSVDataSource::GetRealExtension(CPLString osFilename)
{
CPLString osExt = CPLGetExtension(osFilename);
if( STARTS_WITH(osFilename, "/vsigzip/") && EQUAL(osExt, "gz") )
{
if( osFilename.size() > 7
&& EQUAL(osFilename + osFilename.size() - 7, ".csv.gz") )
osExt = "csv";
else if( osFilename.size() > 7
&& EQUAL(osFilename + osFilename.size() - 7, ".tsv.gz") )
osExt = "tsv";
}
return osExt;
}
示例6: IsValidXPath
static bool IsValidXPath(const CPLString& osXPath )
{
// Check that the XPath syntax belongs to the subset we
// understand
bool bOK = !osXPath.empty();
for(size_t i = 0; i < osXPath.size(); ++i )
{
const char chCur = osXPath[i];
if( chCur == '/' )
{
// OK
}
else if( chCur == '@' &&
(i == 0 || osXPath[i-1] == '/') &&
i < osXPath.size()-1 &&
isalpha( static_cast<int>(osXPath[i+1]) ) )
{
// OK
}
else if( chCur == '_' ||
isalpha( static_cast<int>(chCur) ) )
{
// OK
}
else if( isdigit( static_cast<int>(chCur) ) &&
i > 0 &&
(isalnum( static_cast<int>(osXPath[i-1]) ) ||
osXPath[i-1] == '_') )
{
// OK
}
else if( chCur == ':' &&
i > 0 &&
(isalnum( static_cast<int>(osXPath[i-1]) ) ||
osXPath[i-1] == '_') &&
i < osXPath.size()-1 &&
isalpha( static_cast<int>(osXPath[i+1]) ) )
{
// OK
}
else
{
bOK = false;
break;
}
}
return bOK;
}
示例7: QuoteIfNecessary
CPLString swq_expr_node::QuoteIfNecessary( const CPLString &osExpr,
char chQuote )
{
if( osExpr[0] == '_' )
return Quote(osExpr, chQuote);
if( osExpr == "*" )
return osExpr;
for( int i = 0; i < static_cast<int>(osExpr.size()); i++ )
{
char ch = osExpr[i];
if( (!(isalnum(static_cast<int>(ch)) || ch == '_')) || ch == '.' )
{
return Quote(osExpr, chQuote);
}
}
if( swq_is_reserved_keyword(osExpr) )
{
return Quote(osExpr, chQuote);
}
return osExpr;
}
示例8: TestCapability
int OGRSQLiteSelectLayer::TestCapability( const char * pszCap )
{
if (EQUAL(pszCap,OLCFastSpatialFilter))
{
if (osSQLCurrent != osSQLBase)
return TRUE;
size_t i = 0;
OGRSQLiteLayer* poBaseLayer = GetBaseLayer(i);
if (poBaseLayer == NULL)
{
CPLDebug("SQLITE", "Cannot find base layer");
return FALSE;
}
OGRPolygon oFakePoly;
const char* pszWKT = "POLYGON((0 0,0 1,1 1,1 0,0 0))";
oFakePoly.importFromWkt((char**) &pszWKT);
CPLString osSpatialWhere = poBaseLayer->GetSpatialWhere(&oFakePoly);
return osSpatialWhere.size() != 0;
}
else
return OGRSQLiteLayer::TestCapability( pszCap );
}
示例9: osErrMsg
void GDALGMLJP2Expr::ReportError( const char* pszOriStr,
const char* pszStr,
const char* pszIntroMessage )
{
size_t nDist = static_cast<size_t>(pszStr - pszOriStr);
if( nDist > 40 )
nDist = 40;
CPLString osErrMsg(pszIntroMessage);
CPLString osInvalidExpr = CPLString(pszStr - nDist).substr(0, nDist + 20);
for( int i = static_cast<int>(nDist) - 1; i >= 0; --i )
{
if( osInvalidExpr[i] == '\n' )
{
osInvalidExpr = osInvalidExpr.substr(i+1);
nDist -= i + 1;
break;
}
}
for( size_t i = nDist; i < osInvalidExpr.size(); ++i )
{
if( osInvalidExpr[i] == '\n' )
{
osInvalidExpr.resize(i);
break;
}
}
osErrMsg += osInvalidExpr;
osErrMsg += "\n";
for( size_t i = 0; i < nDist; ++i )
osErrMsg += " ";
osErrMsg += "^";
CPLError(CE_Failure, CPLE_AppDefined, "%s", osErrMsg.c_str());
}
示例10: FixPathSeparator
CPLString wxGISDataset::FixPathSeparator(CPLString &szPath)
{
for(size_t i = 0; i < szPath.size(); ++i)
if(szPath[i] == '/')
szPath[i] = '\\';
return szPath;
}
示例11: ResetStatement
OGRErr OGRSQLiteTableLayer::ResetStatement()
{
int rc;
CPLString osSQL;
ClearStatement();
iNextShapeId = 0;
osSQL.Printf( "SELECT _rowid_, * FROM '%s' %s",
pszEscapedTableName,
osWHERE.c_str() );
rc = sqlite3_prepare( poDS->GetDB(), osSQL, osSQL.size(),
&hStmt, NULL );
if( rc == SQLITE_OK )
{
return OGRERR_NONE;
}
else
{
CPLError( CE_Failure, CPLE_AppDefined,
"In ResetStatement(): sqlite3_prepare(%s):\n %s",
osSQL.c_str(), sqlite3_errmsg(poDS->GetDB()) );
hStmt = NULL;
return OGRERR_FAILURE;
}
}
示例12: GetWorldFilePath
CPLString GetWorldFilePath(const CPLString &soPath)
{
//1. thirst and last char from ext and third char set w (e.g. jpw)
CPLString sExt = CPLGetExtension(soPath);
CPLString sNewExt;
sNewExt += sExt[0];
sNewExt += sExt[sExt.size() - 1];
sNewExt += 'w';
CPLString szPath = (char*)CPLResetExtension(soPath, sNewExt);
if(CPLCheckForFile((char*)szPath.c_str(), NULL))
return szPath;
//4. add wx to ext
sNewExt += 'x';
szPath = (char*)CPLResetExtension(soPath, sNewExt);
if(CPLCheckForFile((char*)szPath.c_str(), NULL))
return szPath;
//2. wld
szPath = (char*)CPLResetExtension(soPath, "wld");
if(CPLCheckForFile((char*)szPath.c_str(), NULL))
return szPath;
//3. add w to ext
szPath = soPath + CPLString("w");
if(CPLCheckForFile((char*)szPath.c_str(), NULL))
return szPath;
return CPLString();
}
示例13: GetSRS_SQL
CPLString OGRAmigoCloudResultLayer::GetSRS_SQL(const char* pszGeomCol)
{
CPLString osSQL;
CPLString osLimitedSQL;
size_t nPos = osBaseSQL.ifind(" LIMIT ");
if( nPos != std::string::npos )
{
osLimitedSQL = osBaseSQL;
size_t nSize = osLimitedSQL.size();
for(size_t i = nPos + strlen(" LIMIT "); i < nSize; i++)
{
if( osLimitedSQL[i] == ' ' && osLimitedSQL[i-1] == '0')
{
osLimitedSQL[i-1] = '1';
break;
}
osLimitedSQL[i] = '0';
}
}
else
osLimitedSQL.Printf("%s LIMIT 1", osBaseSQL.c_str());
/* Assuming that the SRID of the first non-NULL geometry applies */
/* to geometries of all rows. */
osSQL.Printf("SELECT srid, srtext FROM spatial_ref_sys WHERE srid IN "
"(SELECT ST_SRID(%s) FROM (%s) ogr_subselect)",
OGRAMIGOCLOUDEscapeIdentifier(pszGeomCol).c_str(),
osLimitedSQL.c_str());
return osSQL;
}
示例14: BuildWhere
void OGRSQLiteViewLayer::BuildWhere()
{
osWHERE = "";
CPLString osSpatialWHERE = GetSpatialWhere(m_poFilterGeom);
if (osSpatialWHERE.size() != 0)
{
osWHERE = "WHERE ";
osWHERE += osSpatialWHERE;
}
if( osQuery.size() > 0 )
{
if( osWHERE.size() == 0 )
{
osWHERE = "WHERE ";
osWHERE += osQuery;
}
else
{
osWHERE += " AND (";
osWHERE += osQuery;
osWHERE += ")";
}
}
}
示例15: MatchesRefXPath
// This is a performance critical function, especially on geosciml schemas,
// and we make careful to not do any string copy or other memory allocation
// in it.
bool GMLASXPathMatcher::MatchesRefXPath(
const CPLString& osXPath,
const std::vector<XPathComponent>& oRefXPath) const
{
size_t iPos = 0;
size_t iIdxInRef = 0;
bool bDirectChild = oRefXPath[0].m_bDirectChild;
while( iPos < osXPath.size() && iIdxInRef < oRefXPath.size() )
{
bDirectChild = oRefXPath[iIdxInRef].m_bDirectChild;
size_t iPosNextSlash = osXPath.find('/', iPos);
bool bNodeMatch;
if( iPosNextSlash == std::string::npos )
{
bNodeMatch = osXPath.compare(iPos, std::string::npos,
oRefXPath[iIdxInRef].m_osValue) == 0;
}
else
{
bNodeMatch = osXPath.compare(iPos, iPosNextSlash - iPos,
oRefXPath[iIdxInRef].m_osValue) == 0;
}
if( !bNodeMatch )
{
if( bDirectChild )
return false;
if( iPosNextSlash == std::string::npos )
return false;
iPos = iPosNextSlash + 1;
continue;
}
if( iPosNextSlash == std::string::npos )
iPos = osXPath.size();
else
iPos = iPosNextSlash + 1;
iIdxInRef ++;
bDirectChild = true;
}
return (!bDirectChild || iPos == osXPath.size()) &&
iIdxInRef == oRefXPath.size();
}