本文整理汇总了C++中CSLAddString函数的典型用法代码示例。如果您正苦于以下问题:C++ CSLAddString函数的具体用法?C++ CSLAddString怎么用?C++ CSLAddString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了CSLAddString函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OGR2SQLITE_ogr_geocode
static
void OGR2SQLITE_ogr_geocode(sqlite3_context* pContext,
int argc, sqlite3_value** argv)
{
OGRSQLiteExtensionData* poModule =
(OGRSQLiteExtensionData*) sqlite3_user_data(pContext);
if( argc < 1 || sqlite3_value_type (argv[0]) != SQLITE_TEXT )
{
sqlite3_result_null (pContext);
return;
}
const char* pszQuery = (const char*)sqlite3_value_text(argv[0]);
CPLString osField = "geometry";
if( argc >= 2 && sqlite3_value_type (argv[1]) == SQLITE_TEXT )
{
osField = (const char*)sqlite3_value_text(argv[1]);
}
int i;
char** papszOptions = NULL;
for(i = 2; i < argc; i++)
{
if( sqlite3_value_type (argv[i]) == SQLITE_TEXT )
{
papszOptions = CSLAddString(papszOptions,
(const char*)sqlite3_value_text(argv[i]));
}
}
OGRGeocodingSessionH hSession = poModule->GetGeocodingSession();
if( hSession == NULL )
{
hSession = OGRGeocodeCreateSession(papszOptions);
if( hSession == NULL )
{
sqlite3_result_null (pContext);
CSLDestroy(papszOptions);
return;
}
poModule->SetGeocodingSession(hSession);
}
if( osField == "raw" )
papszOptions = CSLAddString(papszOptions, "RAW_FEATURE=YES");
if( CSLFindString(papszOptions, "LIMIT") == -1 )
papszOptions = CSLAddString(papszOptions, "LIMIT=1");
OGRLayerH hLayer = OGRGeocode(hSession, pszQuery, NULL, papszOptions);
OGR2SQLITE_ogr_geocode_set_result(pContext, hLayer, osField);
CSLDestroy(papszOptions);
return;
}
示例2: OGR2SQLITE_IgnoreAllFieldsExceptGeometry
static
void OGR2SQLITE_IgnoreAllFieldsExceptGeometry(OGRLayer* poLayer)
{
char** papszIgnored = NULL;
papszIgnored = CSLAddString(papszIgnored, "OGR_STYLE");
OGRFeatureDefn* poFeatureDefn = poLayer->GetLayerDefn();
for(int i=0; i < poFeatureDefn->GetFieldCount(); i++)
{
papszIgnored = CSLAddString(papszIgnored,
poFeatureDefn->GetFieldDefn(i)->GetNameRef());
}
poLayer->SetIgnoredFields((const char**)papszIgnored);
CSLDestroy(papszIgnored);
}
示例3: wkt_to_p4s
SEXP wkt_to_p4s(SEXP wkt, SEXP esri) {
OGRSpatialReference hSRS = NULL;
char *pszSRS_P4 = NULL;
char **ppszInput = NULL;
SEXP ans;
ppszInput = CSLAddString(ppszInput, CHAR(STRING_ELT(wkt, 0)));
installErrorHandler();
if (hSRS.importFromWkt(ppszInput) != OGRERR_NONE) {
uninstallErrorHandlerAndTriggerError();
error("Can't parse WKT-style parameter string");
}
uninstallErrorHandlerAndTriggerError();
installErrorHandler();
if (INTEGER_POINTER(esri)[0] == 1) hSRS.morphFromESRI();
hSRS.exportToProj4(&pszSRS_P4);
uninstallErrorHandlerAndTriggerError();
PROTECT(ans=NEW_CHARACTER(1));
SET_STRING_ELT(ans, 0, COPY_TO_USER_STRING(pszSRS_P4));
UNPROTECT(1);
return(ans);
}
示例4: CPLAssert
void EIRDataset::ResetKeyValue( const char *pszKey, const char *pszValue )
{
int i;
char szNewLine[82];
if( strlen(pszValue) > 65 )
{
CPLAssert( strlen(pszValue) <= 65 );
return;
}
sprintf( szNewLine, "%-15s%s", pszKey, pszValue );
for( i = CSLCount(papszHDR)-1; i >= 0; i-- )
{
if( EQUALN(papszHDR[i],szNewLine,strlen(pszKey)+1 ) )
{
if( strcmp(papszHDR[i],szNewLine) != 0 )
{
CPLFree( papszHDR[i] );
papszHDR[i] = CPLStrdup( szNewLine );
bHDRDirty = TRUE;
}
return;
}
}
bHDRDirty = TRUE;
papszHDR = CSLAddString( papszHDR, szNewLine );
}
示例5: CSLFindString
CPLErr GDALMultiDomainMetadata::SetMetadata( char **papszMetadata,
const char *pszDomain )
{
if( pszDomain == NULL )
pszDomain = "";
int iDomain = CSLFindString( papszDomainList, pszDomain );
if( iDomain == -1 )
{
int nDomainCount;
papszDomainList = CSLAddString( papszDomainList, pszDomain );
nDomainCount = CSLCount( papszDomainList );
papoMetadataLists = (CPLStringList **)
CPLRealloc( papoMetadataLists, sizeof(void*)*(nDomainCount+1) );
papoMetadataLists[nDomainCount] = NULL;
papoMetadataLists[nDomainCount-1] = new CPLStringList();
iDomain = nDomainCount-1;
}
papoMetadataLists[iDomain]->Assign( CSLDuplicate( papszMetadata ) );
// we want to mark name/value pair domains as being sorted for fast
// access.
if( !EQUALN(pszDomain,"xml:",4) && !EQUAL(pszDomain, "SUBDATASETS") )
papoMetadataLists[iDomain]->Sort();
return CE_None;
}
示例6: CopyBandInfo
void CopyBandInfo( GDALRasterBand * poSrcBand, GDALRasterBand * poDstBand, int bCopyNoData )
{
int bSuccess;
double dfNoData;
char** papszMetadata = poSrcBand->GetMetadata();
char** papszMetadataNew = NULL;
for( int i = 0; papszMetadata != NULL && papszMetadata[i] != NULL; i++ )
{
if (strncmp(papszMetadata[i], "STATISTICS_", 11) != 0)
papszMetadataNew = CSLAddString(papszMetadataNew, papszMetadata[i]);
}
poDstBand->SetMetadata( papszMetadataNew );
CSLDestroy(papszMetadataNew);
poDstBand->SetColorTable( poSrcBand->GetColorTable() );
poDstBand->SetColorInterpretation(poSrcBand->GetColorInterpretation());
if( strlen(poSrcBand->GetDescription()) > 0 )
poDstBand->SetDescription( poSrcBand->GetDescription() );
if (bCopyNoData)
{
dfNoData = poSrcBand->GetNoDataValue( &bSuccess );
if( bSuccess )
poDstBand->SetNoDataValue( dfNoData );
}
poDstBand->SetCategoryNames( poSrcBand->GetCategoryNames() );
if( !EQUAL(poSrcBand->GetUnitType(),"") )
poDstBand->SetUnitType( poSrcBand->GetUnitType() );
}
示例7: osURL
bool OGRAmigoCloudDataSource::RunDELETE(const char*pszURL)
{
CPLString osURL(pszURL);
/* -------------------------------------------------------------------- */
/* Provide the API Key */
/* -------------------------------------------------------------------- */
if( !osAPIKey.empty() )
{
if(osURL.find("?") == std::string::npos)
osURL += "?token=";
else
osURL += "&token=";
osURL += osAPIKey;
}
char** papszOptions=nullptr;
CPLString osPOSTFIELDS("CUSTOMREQUEST=DELETE");
papszOptions = CSLAddString(papszOptions, osPOSTFIELDS);
papszOptions = CSLAddString(papszOptions, GetUserAgentOption().c_str());
CPLHTTPResult * psResult = CPLHTTPFetch( osURL.c_str(), papszOptions);
CSLDestroy(papszOptions);
if( psResult == nullptr )
return false;
if (psResult->pszContentType &&
strncmp(psResult->pszContentType, "text/html", 9) == 0)
{
CPLDebug( "AMIGOCLOUD", "RunDELETE HTML Response:%s", psResult->pabyData );
CPLError(CE_Failure, CPLE_AppDefined,
"HTML error page returned by server:%s", psResult->pabyData);
CPLHTTPDestroyResult(psResult);
return false;
}
if (psResult->pszErrBuf != nullptr && psResult->pabyData != nullptr )
{
CPLError( CE_Failure, CPLE_AppDefined, "DELETE Response: %s", psResult->pabyData );
}
else if ( psResult->nStatus != 0)
{
CPLDebug( "AMIGOCLOUD", "DELETE Error Status:%d", psResult->nStatus );
}
CPLHTTPDestroyResult(psResult);
return true;
}
示例8: CPLPushFinderLocation
void CPLPushFinderLocation( const char *pszLocation )
{
CPLFinderInit();
papszFinderLocations = CSLAddString( papszFinderLocations,
pszLocation );
}
示例9: CSLAddString
char* OGRCouchDBDataSource::GetETag(const char* pszURI)
{
// make a head request and only return the etag response header
char* pszEtag = NULL;
char **papszTokens;
char** papszOptions = NULL;
bMustCleanPersistant = TRUE;
papszOptions = CSLAddString(papszOptions, CPLSPrintf("PERSISTENT=CouchDB:%p", this));
papszOptions = CSLAddString(papszOptions, "HEADERS=Content-Type: application/json");
papszOptions = CSLAddString(papszOptions, "NO_BODY=1");
if (osUserPwd.size())
{
CPLString osUserPwdOption("USERPWD=");
osUserPwdOption += osUserPwd;
papszOptions = CSLAddString(papszOptions, osUserPwdOption);
}
CPLDebug("CouchDB", "HEAD %s", pszURI);
CPLString osFullURL(osURL);
osFullURL += pszURI;
CPLPushErrorHandler(CPLQuietErrorHandler);
CPLHTTPResult * psResult = CPLHTTPFetch( osFullURL, papszOptions);
CPLPopErrorHandler();
CSLDestroy(papszOptions);
if (psResult == NULL)
return NULL;
if (CSLFetchNameValue(psResult->papszHeaders, "Etag") != NULL)
{
papszTokens =
CSLTokenizeString2( CSLFetchNameValue(psResult->papszHeaders, "Etag"), "\"\r\n", 0 );
pszEtag = CPLStrdup(papszTokens[0]);
CSLDestroy( papszTokens );
}
CPLHTTPDestroyResult(psResult);
return pszEtag;
}
示例10: CPLPushFinderLocation
void CPLPushFinderLocation( const char *pszLocation )
{
FindFileTLS* pTLSData = CPLFinderInit();
pTLSData->papszFinderLocations = CSLAddString( pTLSData->papszFinderLocations,
pszLocation );
}
示例11: CSLAddString
void OGRTigerDataSource::AddModule( const char *pszModule )
{
if( CheckModule( pszModule ) )
return;
papszModules = CSLAddString( papszModules, pszModule );
nModules++;
}
示例12: osSQL
CPLHTTPResult * OGRGFTDataSource::RunSQL(const char* pszUnescapedSQL)
{
CPLString osSQL("POSTFIELDS=sql=");
/* Do post escaping */
for(int i=0;pszUnescapedSQL[i] != 0;i++)
{
const int ch = ((unsigned char*)pszUnescapedSQL)[i];
if (ch != '&' && ch >= 32 && ch < 128)
osSQL += (char)ch;
else
osSQL += CPLSPrintf("%%%02X", ch);
}
/* -------------------------------------------------------------------- */
/* Provide the API Key - used to rate limit access (see */
/* GFT_APIKEY config) */
/* -------------------------------------------------------------------- */
osSQL += "&key=";
osSQL += osAPIKey;
/* -------------------------------------------------------------------- */
/* Force old style CSV output from calls - maybe we want to */
/* migrate to JSON output at some point? */
/* -------------------------------------------------------------------- */
osSQL += "&alt=csv";
/* -------------------------------------------------------------------- */
/* Collection the header options and execute request. */
/* -------------------------------------------------------------------- */
char** papszOptions = CSLAddString(AddHTTPOptions(), osSQL);
CPLHTTPResult * psResult = CPLHTTPFetch( GetAPIURL(), papszOptions);
CSLDestroy(papszOptions);
/* -------------------------------------------------------------------- */
/* Check for some error conditions and report. HTML Messages */
/* are transformed info failure. */
/* -------------------------------------------------------------------- */
if (psResult && psResult->pszContentType &&
strncmp(psResult->pszContentType, "text/html", 9) == 0)
{
CPLDebug( "GFT", "RunSQL HTML Response:%s", psResult->pabyData );
CPLError(CE_Failure, CPLE_AppDefined,
"HTML error page returned by server");
CPLHTTPDestroyResult(psResult);
psResult = NULL;
}
if (psResult && psResult->pszErrBuf != NULL)
{
CPLDebug( "GFT", "RunSQL Error Message:%s", psResult->pszErrBuf );
}
else if (psResult && psResult->nStatus != 0)
{
CPLDebug( "GFT", "RunSQL Error Status:%d", psResult->nStatus );
}
return psResult;
}
示例13: locker
bool wxGISDataset::Rename(const wxString &sNewName, ITrackCancel* const pTrackCancel)
{
wxCriticalSectionLocker locker(m_CritSect);
Close();
CPLString szDirPath = CPLGetPath(m_sPath);
CPLString szName = CPLGetBasename(m_sPath);
CPLString szNewName(ClearExt(sNewName).mb_str(wxConvUTF8));
char** papszFileList = GetFileList();
papszFileList = CSLAddString( papszFileList, m_sPath );
if(!papszFileList)
{
if(pTrackCancel)
pTrackCancel->PutMessage(_("No files to rename"), wxNOT_FOUND, enumGISMessageErr);
return false;
}
char **papszNewFileList = NULL;
for(int i = 0; papszFileList[i] != NULL; ++i )
{
CPLString szNewPath(CPLFormFilename(szDirPath, szNewName, GetExtension(papszFileList[i], szName)));
papszNewFileList = CSLAddString(papszNewFileList, szNewPath);
if(!RenameFile(papszFileList[i], papszNewFileList[i], pTrackCancel))
{
// Try to put the ones we moved back.
for( --i; i >= 0; i-- )
RenameFile( papszNewFileList[i], papszFileList[i]);
CSLDestroy( papszFileList );
CSLDestroy( papszNewFileList );
return false;
}
}
m_sPath = CPLString(CPLFormFilename(szDirPath, szNewName, CPLGetExtension(m_sPath)));
CSLDestroy( papszFileList );
CSLDestroy( papszNewFileList );
return true;
}
示例14: CPLReadDir
void wxGxArchiveFolder::LoadChildren(void)
{
if(m_bIsChildrenLoaded)
return;
char **papszItems = CPLReadDir(m_sPath);
if(papszItems == NULL)
return;
char **papszFileList = NULL;
//remove unused items
for(int i = CSLCount(papszItems) - 1; i >= 0; i-- )
{
if( wxGISEQUAL(papszItems[i],".") || wxGISEQUAL(papszItems[i],"..") )
continue;
CPLString szFileName = m_sPath;
szFileName += "/";
szFileName += papszItems[i];
VSIStatBufL BufL;
int ret = VSIStatL(szFileName, &BufL);
if(ret == 0)
{
if(VSI_ISDIR(BufL.st_mode))
{
wxString sCharset(wxT("cp-866"));
wxGISAppConfig oConfig = GetConfig();
if(oConfig.IsOk())
sCharset = oConfig.Read(enumGISHKCU, wxString(wxT("wxGISCommon/zip/charset")), sCharset);
wxString sFileName(papszItems[i], wxCSConv(sCharset));
GetArchiveFolder(this, sFileName, szFileName);
}
else
{
papszFileList = CSLAddString( papszFileList, szFileName );
}
}
}
CSLDestroy( papszItems );
//load names
wxGxCatalog *pCatalog = wxDynamicCast(GetGxCatalog(), wxGxCatalog);
if(pCatalog)
{
wxArrayLong ChildrenIds;
pCatalog->CreateChildren(this, papszFileList, ChildrenIds);
for(size_t i = 0; i < ChildrenIds.GetCount(); ++i)
pCatalog->ObjectAdded(ChildrenIds[i]);
}
CSLDestroy( papszFileList );
m_bIsChildrenLoaded = true;
}
示例15: WriteValue
OGRErr OGRDXFWriterLayer::WriteCore( OGRFeature *poFeature )
{
/* -------------------------------------------------------------------- */
/* Write out an entity id. I'm not sure why this is critical, */
/* but it seems that VoloView will just quietly fail to open */
/* dxf files without entity ids set on most/all entities. */
/* Also, for reasons I don't understand these ids seem to have */
/* to start somewhere around 0x50 hex (80 decimal). */
/* -------------------------------------------------------------------- */
poFeature->SetFID( poDS->WriteEntityID(fp,(int)poFeature->GetFID()) );
/* -------------------------------------------------------------------- */
/* For now we assign everything to the default layer - layer */
/* "0" - if there is no layer property on the source features. */
/* -------------------------------------------------------------------- */
const char *pszLayer = poFeature->GetFieldAsString( "Layer" );
if( pszLayer == nullptr || strlen(pszLayer) == 0 )
{
WriteValue( 8, "0" );
}
else
{
CPLString osSanitizedLayer(pszLayer);
// Replaced restricted characters with underscore
// See http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%202010%20User%20Documentation/index.html?url=WS1a9193826455f5ffa23ce210c4a30acaf-7345.htm,topicNumber=d0e41665
const char achForbiddenChars[] = {
'<', '>', '/', '\\', '"', ':', ';', '?', '*', '|', '=', '\'' };
for( size_t i = 0; i < CPL_ARRAYSIZE(achForbiddenChars); ++i )
{
osSanitizedLayer.replaceAll( achForbiddenChars[i], '_' );
}
// also remove newline characters (#15067)
osSanitizedLayer.replaceAll( "\r\n", "_" );
osSanitizedLayer.replaceAll( '\r', '_' );
osSanitizedLayer.replaceAll( '\n', '_' );
const char *pszExists =
poDS->oHeaderDS.LookupLayerProperty( osSanitizedLayer, "Exists" );
if( (pszExists == nullptr || strlen(pszExists) == 0)
&& CSLFindString( poDS->papszLayersToCreate, osSanitizedLayer ) == -1 )
{
poDS->papszLayersToCreate =
CSLAddString( poDS->papszLayersToCreate, osSanitizedLayer );
}
WriteValue( 8, osSanitizedLayer );
}
return OGRERR_NONE;
}