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