MCPcopy Index your code
hub / github.com/MapServer/MapServer / FLTGetLogicalComparisonCommonExpression

Function FLTGetLogicalComparisonCommonExpression

mapogcfiltercommon.c:429–493  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

427
428
429char *FLTGetLogicalComparisonCommonExpression(FilterEncodingNode *psFilterNode, layerObj *lp)
430{
431 char *pszExpression = NULL;
432 char *pszTmp = NULL;
433 char szBuffer[256];
434
435 if (!psFilterNode || !FLTIsLogicalFilterType(psFilterNode->pszValue))
436 return NULL;
437
438/* -------------------------------------------------------------------- */
439/* OR and AND */
440/* -------------------------------------------------------------------- */
441 if (psFilterNode->psLeftNode && psFilterNode->psRightNode)
442 {
443 pszTmp = FLTGetCommonExpression(psFilterNode->psLeftNode, lp);
444 if (!pszTmp)
445 return NULL;
446
447 sprintf(szBuffer, "%s", " (");
448 pszExpression = msStringConcatenate(pszExpression, szBuffer);
449
450 pszExpression = msStringConcatenate(pszExpression, pszTmp);
451 msFree(pszTmp);
452
453 sprintf(szBuffer, "%s", " ");
454 pszExpression = msStringConcatenate(pszExpression, szBuffer);
455
456 pszExpression = msStringConcatenate(pszExpression, psFilterNode->pszValue);
457 sprintf(szBuffer, "%s", " ");
458
459
460 pszTmp = FLTGetCommonExpression(psFilterNode->psRightNode, lp);
461 if (!pszTmp)
462 return NULL;
463
464 pszExpression = msStringConcatenate(pszExpression, pszTmp);
465 msFree(pszTmp);
466
467 sprintf(szBuffer, "%s", ") ");
468 pszExpression = msStringConcatenate(pszExpression, szBuffer);
469 }
470/* -------------------------------------------------------------------- */
471/* NOT */
472/* -------------------------------------------------------------------- */
473 else if (psFilterNode->psLeftNode &&
474 strcasecmp(psFilterNode->pszValue, "NOT") == 0)
475 {
476 pszTmp = FLTGetCommonExpression(psFilterNode->psLeftNode, lp);
477 if (!pszTmp)
478 return NULL;
479
480 sprintf(szBuffer, "%s", " (NOT ");
481 pszExpression = msStringConcatenate(pszExpression, szBuffer);
482
483 pszExpression = msStringConcatenate(pszExpression, pszTmp);
484 msFree(pszTmp);
485
486 sprintf(szBuffer, "%s", ") ");

Callers 1

FLTGetCommonExpressionFunction · 0.85

Calls 5

FLTIsLogicalFilterTypeFunction · 0.85
FLTGetCommonExpressionFunction · 0.85
msStringConcatenateFunction · 0.85
msFreeFunction · 0.85
strcasecmpFunction · 0.85

Tested by

no test coverage detected