You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2003/07/10 21:50:12 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/DTD DTDScanner.cpp DTDScanner.hpp
peiyongz 2003/07/10 12:50:12
Modified: c/src/xercesc/validators/DTD DTDScanner.cpp DTDScanner.hpp
Log:
Stateless Grammar: create grammar components with grammarPool's memory Manager
Revision Changes Path
1.28 +49 -44 xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.cpp
Index: DTDScanner.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- DTDScanner.cpp 18 May 2003 14:02:06 -0000 1.27
+++ DTDScanner.cpp 10 Jul 2003 19:50:12 -0000 1.28
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.28 2003/07/10 19:50:12 peiyongz
+ * Stateless Grammar: create grammar components with grammarPool's memory Manager
+ *
* Revision 1.27 2003/05/18 14:02:06 knoaman
* Memory manager implementation: pass per instance manager.
*
@@ -306,8 +309,10 @@
// ---------------------------------------------------------------------------
DTDScanner::DTDScanner( DTDGrammar* dtdGrammar
, DocTypeHandler* const docTypeHandler
+ , MemoryManager* const grammarPoolMemoryManager
, MemoryManager* const manager) :
fMemoryManager(manager)
+ , fGrammarPoolMemoryManager(grammarPoolMemoryManager)
, fDocTypeHandler(docTypeHandler)
, fDumAttDef(0)
, fDumElemDecl(0)
@@ -639,12 +644,12 @@
// It does not already exist so create a new one, give it the next
// available unique id, and add it
//
- decl = new (fMemoryManager) DTDAttDef
+ decl = new (fGrammarPoolMemoryManager) DTDAttDef
(
bufToUse.getRawBuffer()
, XMLAttDef::CData
, XMLAttDef::Implied
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
decl->setId(fNextAttrId++);
decl->setExternalAttDeclaration(isReadingExternalEntity());
@@ -822,12 +827,12 @@
// it having been created because of an attlist. Later, if its
// declared, this will be updated.
//
- elemDecl = new (fMemoryManager) DTDElementDecl
+ elemDecl = new (fGrammarPoolMemoryManager) DTDElementDecl
(
bbName.getRawBuffer()
, fEmptyNamespaceId
, DTDElementDecl::Any
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
elemDecl->setCreateReason(XMLElementDecl::AttList);
elemDecl->setExternalElemDeclaration(isReadingExternalEntity());
@@ -1281,21 +1286,21 @@
XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE);
if (!decl)
{
- decl = new (fMemoryManager) DTDElementDecl
+ decl = new (fGrammarPoolMemoryManager) DTDElementDecl
(
bufToUse.getRawBuffer()
, fEmptyNamespaceId
, DTDElementDecl::Any
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
decl->setCreateReason(XMLElementDecl::InContentModel);
decl->setExternalElemDeclaration(isReadingExternalEntity());
fDTDGrammar->putElemDecl(decl);
}
- curNode = new (fMemoryManager) ContentSpecNode
+ curNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
decl->getElementName()
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
// Check for a PE ref here, but don't require spaces
@@ -1303,7 +1308,7 @@
// Check for a repetition character after the leaf
const XMLCh repCh = fReaderMgr->peekNextChar();
- ContentSpecNode* tmpNode = makeRepNode(repCh, curNode, fMemoryManager);
+ ContentSpecNode* tmpNode = makeRepNode(repCh, curNode, fGrammarPoolMemoryManager);
if (tmpNode != curNode)
{
if (gotSpaces)
@@ -1345,28 +1350,28 @@
if (opCh == chComma)
{
curType = ContentSpecNode::Sequence;
- headNode = new (fMemoryManager) ContentSpecNode
+ headNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
curType
, curNode
, 0
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
curNode = headNode;
}
else if (opCh == chPipe)
{
curType = ContentSpecNode::Choice;
- headNode = new (fMemoryManager) ContentSpecNode
+ headNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
curType
, curNode
, 0
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
curNode = headNode;
}
@@ -1445,14 +1450,14 @@
fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE);
// Else patch it in and make it the new current
- ContentSpecNode* newCur = new (fMemoryManager) ContentSpecNode
+ ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode
(
curType
, subNode
, 0
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
curNode->setSecond(newCur);
lastNode = curNode;
@@ -1480,27 +1485,27 @@
XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE);
if (!decl)
{
- decl = new (fMemoryManager) DTDElementDecl
+ decl = new (fGrammarPoolMemoryManager) DTDElementDecl
(
bufToUse.getRawBuffer()
, fEmptyNamespaceId
, DTDElementDecl::Any
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
decl->setCreateReason(XMLElementDecl::InContentModel);
decl->setExternalElemDeclaration(isReadingExternalEntity());
fDTDGrammar->putElemDecl(decl);
}
- ContentSpecNode* tmpLeaf = new (fMemoryManager) ContentSpecNode
+ ContentSpecNode* tmpLeaf = new (fGrammarPoolMemoryManager) ContentSpecNode
(
decl->getElementName()
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
// Check for a repetition character after the leaf
const XMLCh repCh = fReaderMgr->peekNextChar();
- ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf, fMemoryManager);
+ ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf, fGrammarPoolMemoryManager);
if (tmpLeaf != tmpLeaf2)
fReaderMgr->getNextChar();
@@ -1510,14 +1515,14 @@
// Make the new node the second node of the current node,
// and then make it the current node.
//
- ContentSpecNode* newCur = new (fMemoryManager) ContentSpecNode
+ ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode
(
curType
, tmpLeaf2
, 0
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
curNode->setSecond(newCur);
lastNode = curNode;
@@ -1551,7 +1556,7 @@
// of it.
//
XMLCh repCh = fReaderMgr->peekNextChar();
- ContentSpecNode* retNode = makeRepNode(repCh, headNode, fMemoryManager);
+ ContentSpecNode* retNode = makeRepNode(repCh, headNode, fGrammarPoolMemoryManager);
if (retNode != headNode)
fReaderMgr->getNextChar();
@@ -1860,12 +1865,12 @@
// Create the new empty declaration to fill in and put it into
// the decl pool.
//
- decl = new (fMemoryManager) DTDElementDecl
+ decl = new (fGrammarPoolMemoryManager) DTDElementDecl
(
bbName.getRawBuffer()
, fEmptyNamespaceId
, DTDElementDecl::Any
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
fDTDGrammar->putElemDecl(decl);
}
@@ -1982,7 +1987,7 @@
else
{
// Its not in existence already, then create an entity decl for it
- entityDecl = new (fMemoryManager) DTDEntityDecl(bbName.getRawBuffer(), false, fMemoryManager);
+ entityDecl = new (fGrammarPoolMemoryManager) DTDEntityDecl(bbName.getRawBuffer(), false, fGrammarPoolMemoryManager);
//
// Set the declaration location. The parameter indicates whether its
@@ -3356,17 +3361,17 @@
// PCDATA element id. This current node pointer will be pushed down the
// tree as we go.
//
- ContentSpecNode* curNode = new (fMemoryManager) ContentSpecNode
+ ContentSpecNode* curNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
- new (fMemoryManager) QName
+ new (fGrammarPoolMemoryManager) QName
(
XMLUni::fgZeroLenString
, XMLUni::fgZeroLenString
, XMLElementDecl::fgPCDataElemId
- , fMemoryManager
+ , fGrammarPoolMemoryManager
)
, false
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
//
@@ -3434,14 +3439,14 @@
// node its first child.
//
if (starRequired || starSkipped) {
- headNode = new (fMemoryManager) ContentSpecNode
+ headNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
ContentSpecNode::ZeroOrMore
, headNode
, 0
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
}
@@ -3472,12 +3477,12 @@
XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, nameBuf.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE);
if (!decl)
{
- decl = new (fMemoryManager) DTDElementDecl
+ decl = new (fGrammarPoolMemoryManager) DTDElementDecl
(
nameBuf.getRawBuffer()
, fEmptyNamespaceId
, DTDElementDecl::Any
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
decl->setCreateReason(XMLElementDecl::InContentModel);
decl->setExternalElemDeclaration(isReadingExternalEntity());
@@ -3495,18 +3500,18 @@
//
if (curNode == orgNode)
{
- curNode = new (fMemoryManager) ContentSpecNode
+ curNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
ContentSpecNode::Choice
, curNode
- , new (fMemoryManager) ContentSpecNode
+ , new (fGrammarPoolMemoryManager) ContentSpecNode
(
decl->getElementName()
- , fMemoryManager
+ , fGrammarPoolMemoryManager
)
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
// Remember the top node
@@ -3517,18 +3522,18 @@
ContentSpecNode* oldRight = curNode->orphanSecond();
curNode->setSecond
(
- new (fMemoryManager) ContentSpecNode
+ new (fGrammarPoolMemoryManager) ContentSpecNode
(
ContentSpecNode::Choice
, oldRight
- , new (fMemoryManager) ContentSpecNode
+ , new (fGrammarPoolMemoryManager) ContentSpecNode
(
decl->getElementName()
- , fMemoryManager
+ , fGrammarPoolMemoryManager
)
, true
, true
- , fMemoryManager
+ , fGrammarPoolMemoryManager
)
);
@@ -3618,13 +3623,13 @@
ReaderMgr::LastExtEntityInfo lastInfo;
fReaderMgr->getLastExtEntityInfo(lastInfo);
- decl = new (fMemoryManager) XMLNotationDecl
+ decl = new (fGrammarPoolMemoryManager) XMLNotationDecl
(
bbName.getRawBuffer()
, (publicId && *publicId) ? publicId : 0
, (systemId && *systemId) ? systemId : 0
, (lastInfo.systemId && *lastInfo.systemId) ? lastInfo.systemId : 0
- , fMemoryManager
+ , fGrammarPoolMemoryManager
);
fDTDGrammar->putNotationDecl(decl);
}
1.9 +5 -0 xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.hpp
Index: DTDScanner.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/DTD/DTDScanner.hpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DTDScanner.hpp 16 May 2003 21:43:19 -0000 1.8
+++ DTDScanner.hpp 10 Jul 2003 19:50:12 -0000 1.9
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.9 2003/07/10 19:50:12 peiyongz
+ * Stateless Grammar: create grammar components with grammarPool's memory Manager
+ *
* Revision 1.8 2003/05/16 21:43:19 knoaman
* Memory manager implementation: Modify constructors to pass in the memory manager.
*
@@ -147,6 +150,7 @@
(
DTDGrammar* dtdGrammar
, DocTypeHandler* const docTypeHandler
+ , MemoryManager* const grammarPoolMemoryManager
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
virtual ~DTDScanner();
@@ -298,6 +302,7 @@
// declaration
// -----------------------------------------------------------------------
MemoryManager* fMemoryManager;
+ MemoryManager* fGrammarPoolMemoryManager;
DocTypeHandler* fDocTypeHandler;
DTDAttDef* fDumAttDef;
DTDElementDecl* fDumElemDecl;
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org