From 61b2f7237362d963ce5f006d7f256306d8748a9c Mon Sep 17 00:00:00 2001
From: PeiYong Zhang <peiyongz@apache.org>
Date: Wed, 25 Jun 2003 19:31:30 +0000
Subject: [PATCH] using new putGrammar()

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@175099 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/internal/DGXMLScanner.cpp  | 12 ++++++++----
 src/xercesc/internal/IGXMLScanner.cpp  |  9 ++++++---
 src/xercesc/internal/IGXMLScanner2.cpp |  4 +++-
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/xercesc/internal/DGXMLScanner.cpp b/src/xercesc/internal/DGXMLScanner.cpp
index d8bf17cf8..4856de95a 100644
--- a/src/xercesc/internal/DGXMLScanner.cpp
+++ b/src/xercesc/internal/DGXMLScanner.cpp
@@ -977,7 +977,8 @@ void DGXMLScanner::scanDocTypeDecl()
 
                 XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
                 fGrammarResolver->orphanGrammar(gramDesc);
-                fGrammarResolver->putGrammar(sysIdStr, fGrammar);
+                gramDesc->setRootName(sysIdStr);
+                fGrammarResolver->putGrammar(gramDesc, fGrammar);
             }
 
             //  In order to make the processing work consistently, we have to
@@ -1679,7 +1680,8 @@ Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src,
         fValidator->reset();
 
     fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar();   
-    fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar);
+    XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
+    fGrammarResolver->putGrammar(gramDesc, fDTDGrammar);
     fGrammar = fDTDGrammar;
     fValidator->setGrammar(fGrammar);
 
@@ -1702,7 +1704,8 @@ Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src,
 
         XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
         fGrammarResolver->orphanGrammar(gramDesc);
-        fGrammarResolver->putGrammar(sysIdStr, fGrammar);
+        gramDesc->setRootName(sysIdStr);
+        fGrammarResolver->putGrammar(gramDesc, fGrammar);
     }
 
     //  Handle the creation of the XML reader object for this input source.
@@ -2034,7 +2037,8 @@ void DGXMLScanner::scanReset(const InputSource& src)
     fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar);
 
     fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar();
-    fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar);
+    XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
+    fGrammarResolver->putGrammar(gramDesc, fDTDGrammar);
     fGrammar = fDTDGrammar;
     fRootGrammar = 0;
     fValidator->setGrammar(fGrammar);
diff --git a/src/xercesc/internal/IGXMLScanner.cpp b/src/xercesc/internal/IGXMLScanner.cpp
index 407d125c3..5d6812682 100644
--- a/src/xercesc/internal/IGXMLScanner.cpp
+++ b/src/xercesc/internal/IGXMLScanner.cpp
@@ -1383,7 +1383,8 @@ void IGXMLScanner::scanDocTypeDecl()
 
                 XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
                 fGrammarResolver->orphanGrammar(gramDesc);
-                fGrammarResolver->putGrammar(sysIdStr, fGrammar);
+                gramDesc->setRootName(sysIdStr);
+                fGrammarResolver->putGrammar(gramDesc, fGrammar);
             }
 
             //  In order to make the processing work consistently, we have to
@@ -2849,7 +2850,8 @@ Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src,
     }
 
     fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar();
-    fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar);
+    XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
+    fGrammarResolver->putGrammar(gramDesc, fDTDGrammar);
     fGrammar = fDTDGrammar;
     fGrammarType = fGrammar->getGrammarType();
     fValidator->setGrammar(fGrammar);
@@ -2873,7 +2875,8 @@ Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src,
 
         XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
         fGrammarResolver->orphanGrammar(gramDesc);
-        fGrammarResolver->putGrammar(sysIdStr, fGrammar);
+        gramDesc->setRootName(sysIdStr);
+        fGrammarResolver->putGrammar(gramDesc, fGrammar);
     }
 
     //  Handle the creation of the XML reader object for this input source.
diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp
index ea921524f..ea01a084a 100644
--- a/src/xercesc/internal/IGXMLScanner2.cpp
+++ b/src/xercesc/internal/IGXMLScanner2.cpp
@@ -78,6 +78,7 @@
 #include <xercesc/framework/XMLPScanToken.hpp>
 #include <xercesc/framework/XMLRefInfo.hpp>
 #include <xercesc/framework/XMLGrammarPool.hpp>
+#include <xercesc/framework/XMLDTDDescription.hpp>
 #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp>
 #include <xercesc/validators/DTD/DTDGrammar.hpp>
 #include <xercesc/validators/DTD/DTDValidator.hpp>
@@ -866,7 +867,8 @@ void IGXMLScanner::scanReset(const InputSource& src)
     fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar);
 
     fDTDGrammar = fGrammarResolver->getGrammarPool()->createDTDGrammar();
-    fGrammarResolver->putGrammar(XMLUni::fgDTDEntityString, fDTDGrammar);
+    XMLDTDDescription* gramDesc = fGrammarResolver->getGrammarPool()->createDTDDescription(XMLUni::fgDTDEntityString);
+    fGrammarResolver->putGrammar(gramDesc, fDTDGrammar);
     fGrammar = fDTDGrammar;
     fGrammarType = fGrammar->getGrammarType();
     fRootGrammar = 0;
-- 
GitLab