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

Function msSLDNumberOfLogicalOperators

mapogcsld.c:4697–4742  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4695
4696
4697int msSLDNumberOfLogicalOperators(char *pszExpression)
4698{
4699 char *pszAnd = NULL;
4700 char *pszOr = NULL;
4701 char *pszNot = NULL;
4702 char *pszSecondAnd=NULL, *pszSecondOr=NULL;
4703 if (!pszExpression)
4704 return 0;
4705
4706/* -------------------------------------------------------------------- */
4707/* tests here are minimal to be able to parse simple expression */
4708/* like A AND B, A OR B, NOT A. */
4709/* -------------------------------------------------------------------- */
4710 pszAnd = strcasestr(pszExpression, " AND ");
4711 pszOr = strcasestr(pszExpression, " OR ");
4712 pszNot = strcasestr(pszExpression, "NOT ");
4713
4714 if (!pszAnd && !pszOr)
4715 {
4716 pszAnd = strcasestr(pszExpression, "AND(");
4717 pszOr = strcasestr(pszExpression, "OR(");
4718 }
4719
4720 if (!pszAnd && !pszOr && !pszNot)
4721 return 0;
4722
4723 /* doen not matter how many exactly if there are 2 or more */
4724 if ((pszAnd && pszOr) || (pszAnd && pszNot) || (pszOr && pszNot))
4725 return 2;
4726
4727 if (pszAnd)
4728 {
4729 pszSecondAnd = strcasestr(pszAnd+3, " AND ");
4730 pszSecondOr = strcasestr(pszAnd+3, " OR ");
4731 }
4732 else if (pszOr)
4733 {
4734 pszSecondAnd = strcasestr(pszOr+2, " AND ");
4735 pszSecondOr = strcasestr(pszOr+2, " OR ");
4736 }
4737
4738 if (!pszSecondAnd && !pszSecondOr)
4739 return 1;
4740 else
4741 return 2;
4742}
4743
4744
4745char *msSLDGetAttributeNameOrValue(char *pszExpression,

Callers 1

BuildExpressionTreeFunction · 0.85

Calls 1

strcasestrFunction · 0.85

Tested by

no test coverage detected