Exemple #1
0
	/* Added by Rick Mugridge, Feb 2005, adapted by Dave Woldrich for CeeFIT Apr 2005 */
	static int findMatchingEndTag(const STRING& lc, int matchFromHere, const STRING& tag, int offset) 
  {
		int fromHere = matchFromHere;
		int count = 1;
		int startEnd = 0;
		while (count > 0) 
    {
			int embeddedTag = lc.IndexOf(STRING("<") + tag, fromHere);
			int embeddedTagEnd = lc.IndexOf(STRING("</") + tag, fromHere);
			// Which one is closer?
			if (embeddedTag < 0 && embeddedTagEnd < 0)
				throw new PARSEEXCEPTION(STRING("Can't find tag: ") + tag, offset);
			if (embeddedTag < 0)
				embeddedTag = INT_MAX;
			if (embeddedTagEnd < 0)
				embeddedTagEnd = INT_MAX;
			if (embeddedTag < embeddedTagEnd) 
      {
				count++;
				startEnd = embeddedTag;
				fromHere = lc.IndexOf(STRING(">"), embeddedTag) + 1;
			}
		  else if (embeddedTagEnd < embeddedTag) 
      {
				count--;
				startEnd = embeddedTagEnd;
				fromHere = lc.IndexOf(STRING(">"), embeddedTagEnd) + 1;
			}
		}
		return startEnd;
	}