knoaman     2003/11/20 09:52:14

  Modified:    c/src/xercesc/validators/common ContentSpecNode.hpp
                        ContentSpecNode.cpp
  Log:
  PSVI: store element declaration (leaf nodes)
  
  Revision  Changes    Path
  1.10      +46 -0     xml-xerces/c/src/xercesc/validators/common/ContentSpecNode.hpp
  
  Index: ContentSpecNode.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/common/ContentSpecNode.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ContentSpecNode.hpp       7 Nov 2003 17:08:11 -0000       1.9
  +++ ContentSpecNode.hpp       20 Nov 2003 17:52:14 -0000      1.10
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.10  2003/11/20 17:52:14  knoaman
  + * PSVI: store element declaration (leaf nodes)
  + *
    * Revision 1.9  2003/11/07 17:08:11  knoaman
    * For PSVI support, distinguish wildcard elements with namespace lists.
    *
  @@ -200,9 +203,11 @@
           , Any_NS = 8
           , All = 9
           , Any_NS_Choice = 20
  +        , ModelGroupSequence = 21
           , Any_Lax = 22
           , Any_Other_Lax = 23
           , Any_NS_Lax = 24
  +        , ModelGroupChoice = 36
           , Any_Skip = 38
           , Any_Other_Skip = 39
           , Any_NS_Skip = 40
  @@ -222,6 +227,11 @@
       );
       ContentSpecNode
       (
  +        XMLElementDecl* const elemDecl
  +        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
  +    );
  +    ContentSpecNode
  +    (
           QName* const toAdopt
           , const bool copyQName
           , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
  @@ -243,6 +253,8 @@
       // -----------------------------------------------------------------------
       QName* getElement();
       const QName* getElement() const;
  +    XMLElementDecl* getElementDecl();
  +    const XMLElementDecl* getElementDecl() const;
       ContentSpecNode* getFirst();
       const ContentSpecNode* getFirst() const;
       ContentSpecNode* getSecond();
  @@ -327,6 +339,7 @@
       // -----------------------------------------------------------------------
       MemoryManager*      fMemoryManager;
       QName*              fElement;
  +    XMLElementDecl*     fElementDecl;
       ContentSpecNode*    fFirst;
       ContentSpecNode*    fSecond;
       NodeTypes           fType;
  @@ -343,6 +356,7 @@
   
       fMemoryManager(manager)
       , fElement(0)
  +    , fElementDecl(0)
       , fFirst(0)
       , fSecond(0)
       , fType(ContentSpecNode::Leaf)
  @@ -359,6 +373,7 @@
   
       fMemoryManager(manager)
       , fElement(0)
  +    , fElementDecl(0)
       , fFirst(0)
       , fSecond(0)
       , fType(ContentSpecNode::Leaf)
  @@ -372,12 +387,32 @@
   }
   
   inline
  +ContentSpecNode::ContentSpecNode(XMLElementDecl* const elemDecl,
  +                                 MemoryManager* const manager) :
  +
  +    fMemoryManager(manager)
  +    , fElement(0)
  +    , fElementDecl(elemDecl)
  +    , fFirst(0)
  +    , fSecond(0)
  +    , fType(ContentSpecNode::Leaf)
  +    , fAdoptFirst(true)
  +    , fAdoptSecond(true)
  +    , fMinOccurs(1)
  +    , fMaxOccurs(1)
  +{
  +    if (elemDecl)
  +        fElement = new (manager) QName(*(elemDecl->getElementName()));
  +}
  +
  +inline
   ContentSpecNode::ContentSpecNode( QName* const element
                                   , const bool copyQName
                                   , MemoryManager* const manager) :
   
       fMemoryManager(manager)
       , fElement(0)
  +    , fElementDecl(0)
       , fFirst(0)
       , fSecond(0)
       , fType(ContentSpecNode::Leaf)
  @@ -407,6 +442,7 @@
   
       fMemoryManager(manager)
       , fElement(0)
  +    , fElementDecl(0)
       , fFirst(firstAdopt)
       , fSecond(secondAdopt)
       , fType(type)
  @@ -442,6 +478,16 @@
   inline const QName* ContentSpecNode::getElement() const
   {
       return fElement;
  +}
  +
  +inline XMLElementDecl* ContentSpecNode::getElementDecl()
  +{
  +    return fElementDecl;
  +}
  +
  +inline const XMLElementDecl* ContentSpecNode::getElementDecl() const
  +{
  +    return fElementDecl;
   }
   
   inline ContentSpecNode* ContentSpecNode::getFirst()
  
  
  
  1.11      +13 -17    xml-xerces/c/src/xercesc/validators/common/ContentSpecNode.cpp
  
  Index: ContentSpecNode.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/common/ContentSpecNode.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ContentSpecNode.cpp       7 Nov 2003 17:08:11 -0000       1.10
  +++ ContentSpecNode.cpp       20 Nov 2003 17:52:14 -0000      1.11
  @@ -78,30 +78,27 @@
   
   ContentSpecNode::ContentSpecNode(const ContentSpecNode& toCopy) :
       fMemoryManager(toCopy.fMemoryManager)
  +    , fElement(0)
  +    , fElementDecl(toCopy.fElementDecl)
  +    , fFirst(0)
  +    , fSecond(0)
  +    , fType(toCopy.fType)
  +    , fAdoptFirst(true)
  +    , fAdoptSecond(true)
  +    , fMinOccurs(toCopy.fMinOccurs)
  +    , fMaxOccurs(toCopy.fMaxOccurs)
   {
       const QName* tempElement = toCopy.getElement();
       if (tempElement)
           fElement = new (fMemoryManager) QName(*tempElement);
  -    else
  -        fElement = 0;
   
       const ContentSpecNode *tmp = toCopy.getFirst();
       if (tmp)
           fFirst = new (fMemoryManager) ContentSpecNode(*tmp);
  -    else
  -        fFirst = 0;
   
       tmp = toCopy.getSecond();
       if (tmp)
           fSecond = new (fMemoryManager) ContentSpecNode(*tmp);
  -    else
  -        fSecond = 0;
  -
  -    fType = toCopy.getType();
  -    fAdoptFirst = true;
  -    fAdoptSecond = true;
  -    fMinOccurs = toCopy.getMinOccurs();
  -    fMaxOccurs = toCopy.getMaxOccurs();
   }
   
   // ---------------------------------------------------------------------------
  @@ -134,7 +131,7 @@
       }
   
       // Now handle our type
  -    switch(curType)
  +    switch(curType & 0x0f)
       {
           case ContentSpecNode::Leaf :
               if (curNode->getElement()->getURI() == XMLElementDecl::fgPCDataElemId)
  @@ -171,7 +168,6 @@
               break;
   
           case ContentSpecNode::Choice :
  -        case ContentSpecNode::Any_NS_Choice:
               if (parentType != curType)
                   bufToFill.append(chOpenParen);
               formatNode(first, curType, bufToFill);
  @@ -233,7 +229,7 @@
   
       int min = fMinOccurs;
   
  -    if (fType == ContentSpecNode::Sequence
  +    if ((fType & 0x0f) == ContentSpecNode::Sequence
           || fType == ContentSpecNode::All
           || (fType & 0x0f) == ContentSpecNode::Choice) {
   
  @@ -265,7 +261,7 @@
            return SchemaSymbols::XSD_UNBOUNDED;
       }
   
  -    if (fType == ContentSpecNode::Sequence
  +    if ((fType & 0x0f) == ContentSpecNode::Sequence
           || fType == ContentSpecNode::All
           || (fType & 0x0f) == ContentSpecNode::Choice) {
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to