From 51dbdfdf1e29deba1119a68e542a740916fd1c44 Mon Sep 17 00:00:00 2001
From: Tinny Ng <tng@apache.org>
Date: Wed, 7 Nov 2001 21:10:46 +0000
Subject: [PATCH] Performance: move getRawName() to outer loop so that it is
 called only once per outer loop.

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@173204 13f79535-47bb-0310-9956-ffa450edef68
---
 src/validators/common/DFAContentModel.cpp | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/validators/common/DFAContentModel.cpp b/src/validators/common/DFAContentModel.cpp
index ffa84e8c2..63060b039 100644
--- a/src/validators/common/DFAContentModel.cpp
+++ b/src/validators/common/DFAContentModel.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.26  2001/11/07 21:10:46  tng
+ * Performance: move getRawName() to outer loop so that it is called only once per outer loop.
+ *
  * Revision 1.25  2001/10/04 15:08:55  knoaman
  * Add support for circular import.
  *
@@ -290,6 +293,9 @@ DFAContentModel::validateContent( QName** const        children
     {
         // Get the current element index out
         const QName* curElem = children[childIndex];
+        const XMLCh* curElemRawName = 0;
+        if (fDTD)
+            curElemRawName = curElem->getRawName();
 
         // If this is text in a Schema mixed content model, skip it.
         if ( fIsMixed &&
@@ -302,7 +308,7 @@ DFAContentModel::validateContent( QName** const        children
         {
             const QName* inElem  = fElemMap[elemIndex];
             if (fDTD) {
-                if (!XMLString::compareString(inElem->getRawName(), curElem->getRawName())) {
+                if (!XMLString::compareString(inElem->getRawName(), curElemRawName)) {
                     nextState = fTransTable[curState][elemIndex];
                     if (nextState != XMLContentModel::gInvalidTrans)
                         break;
@@ -583,6 +589,9 @@ void DFAContentModel::buildDFA(ContentSpecNode* const curNode)
 
         // Get the current leaf's element index
         const QName* element = fLeafList[outIndex]->getElement();
+        const XMLCh* elementRawName = 0;
+        if (fDTD && element)
+            elementRawName = element->getRawName();
 
         // See if the current leaf node's element index is in the list
         unsigned int inIndex = 0;
@@ -591,7 +600,7 @@ void DFAContentModel::buildDFA(ContentSpecNode* const curNode)
         {
             const QName* inElem = fElemMap[inIndex];
             if (fDTD) {
-                if (!XMLString::compareString(inElem->getRawName(), element->getRawName())) {
+                if (!XMLString::compareString(inElem->getRawName(), elementRawName)) {
                     break;
                 }
             }
@@ -630,13 +639,17 @@ void DFAContentModel::buildDFA(ContentSpecNode* const curNode)
 
     for (unsigned int elemIndex = 0; elemIndex < fElemMapSize; elemIndex++)
     {
+        const QName* element = fElemMap[elemIndex];
+        const XMLCh* elementRawName = 0;
+        if (fDTD && element)
+            elementRawName = element->getRawName();
+
         for (unsigned int leafIndex = 0; leafIndex < fLeafCount; leafIndex++)
         {
             const QName* leaf = fLeafList[leafIndex]->getElement();
             const int leafType = fLeafListType[leafIndex];
-            const QName* element = fElemMap[elemIndex];
             if (fDTD) {
-                if (!XMLString::compareString(leaf->getRawName(), element->getRawName())) {
+                if (!XMLString::compareString(leaf->getRawName(), elementRawName)) {
                     fLeafSorter[fSortCount++] = leafIndex;
                 }
             }
-- 
GitLab