knoaman 2003/11/20 10:12:20 Modified: c/src/xercesc/validators/common CMBinaryOp.cpp DFAContentModel.cpp MixedContentModel.cpp SimpleContentModel.cpp c/src/xercesc/validators/schema SchemaValidator.cpp Log: Use a bitwise operation to check the node type. Revision Changes Path 1.5 +6 -3 xml-xerces/c/src/xercesc/validators/common/CMBinaryOp.cpp Index: CMBinaryOp.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/common/CMBinaryOp.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- CMBinaryOp.cpp 7 Nov 2003 17:08:11 -0000 1.4 +++ CMBinaryOp.cpp 20 Nov 2003 18:12:20 -0000 1.5 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.5 2003/11/20 18:12:20 knoaman + * Use a bitwise operation to check the node type. + * * Revision 1.4 2003/11/07 17:08:11 knoaman * For PSVI support, distinguish wildcard elements with namespace lists. * @@ -120,7 +123,7 @@ { // Insure that its one of the types we require if (((type & 0x0f) != ContentSpecNode::Choice) - && (type != ContentSpecNode::Sequence)) + && ((type & 0x0f) != ContentSpecNode::Sequence)) { ThrowXML(RuntimeException, XMLExcepts::CM_BinOpHadUnaryType); } @@ -185,7 +188,7 @@ toSet = fLeftChild->getFirstPos(); toSet |= fRightChild->getFirstPos(); } - else if (getType() == ContentSpecNode::Sequence) + else if ((getType() & 0x0f) == ContentSpecNode::Sequence) { // // If our left child is nullable, then its the union of our @@ -206,7 +209,7 @@ toSet = fLeftChild->getLastPos(); toSet |= fRightChild->getLastPos(); } - else if (getType() == ContentSpecNode::Sequence) + else if ((getType() & 0x0f) == ContentSpecNode::Sequence) { // // If our right child is nullable, then its the union of our 1.9 +6 -3 xml-xerces/c/src/xercesc/validators/common/DFAContentModel.cpp Index: DFAContentModel.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/common/DFAContentModel.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DFAContentModel.cpp 7 Nov 2003 17:08:11 -0000 1.8 +++ DFAContentModel.cpp 20 Nov 2003 18:12:20 -0000 1.9 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.9 2003/11/20 18:12:20 knoaman + * Use a bitwise operation to check the node type. + * * Revision 1.8 2003/11/07 17:08:11 knoaman * For PSVI support, distinguish wildcard elements with namespace lists. * @@ -1094,7 +1097,7 @@ ContentSpecNode* rightNode = curNode->getSecond(); if (((curType & 0x0f) == ContentSpecNode::Choice) - || (curType == ContentSpecNode::Sequence)) + || ((curType & 0x0f) == ContentSpecNode::Sequence)) { // // Recurse on both children, and return a binary op node with the @@ -1143,7 +1146,7 @@ calcFollowList(((CMBinaryOp*)curNode)->getLeft()); calcFollowList(((CMBinaryOp*)curNode)->getRight()); } - else if (curType == ContentSpecNode::Sequence) + else if ((curType & 0x0f) == ContentSpecNode::Sequence) { // Recurse before we process this node calcFollowList(((CMBinaryOp*)curNode)->getLeft()); @@ -1250,7 +1253,7 @@ ++newIndex; } else if (((curType & 0x0f) == ContentSpecNode::Choice) - || (curType == ContentSpecNode::Sequence)) + || ((curType & 0x0f) == ContentSpecNode::Sequence)) { newIndex = postTreeBuildInit(((CMBinaryOp*)nodeCur)->getLeft(), newIndex); newIndex = postTreeBuildInit(((CMBinaryOp*)nodeCur)->getRight(), newIndex); 1.8 +4 -1 xml-xerces/c/src/xercesc/validators/common/MixedContentModel.cpp Index: MixedContentModel.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/common/MixedContentModel.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- MixedContentModel.cpp 7 Nov 2003 17:08:11 -0000 1.7 +++ MixedContentModel.cpp 20 Nov 2003 18:12:20 -0000 1.8 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.8 2003/11/20 18:12:20 knoaman + * Use a bitwise operation to check the node type. + * * Revision 1.7 2003/11/07 17:08:11 knoaman * For PSVI support, distinguish wildcard elements with namespace lists. * @@ -485,7 +488,7 @@ // And recurse according to the type of node if (((curType & 0x0f) == ContentSpecNode::Choice) - || (curType == ContentSpecNode::Sequence)) + || ((curType & 0x0f) == ContentSpecNode::Sequence)) { // Recurse on the left and right nodes buildChildList(leftNode, toFill, toType); 1.6 +5 -4 xml-xerces/c/src/xercesc/validators/common/SimpleContentModel.cpp Index: SimpleContentModel.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/common/SimpleContentModel.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- SimpleContentModel.cpp 7 Nov 2003 17:08:11 -0000 1.5 +++ SimpleContentModel.cpp 20 Nov 2003 18:12:20 -0000 1.6 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2003/11/20 18:12:20 knoaman + * Use a bitwise operation to check the node type. + * * Revision 1.5 2003/11/07 17:08:11 knoaman * For PSVI support, distinguish wildcard elements with namespace lists. * @@ -156,7 +159,7 @@ // content check. // unsigned int index; - switch(fOp) + switch(fOp & 0x0f) { case ContentSpecNode::Leaf : // @@ -261,7 +264,6 @@ break; case ContentSpecNode::Choice : - case ContentSpecNode::Any_NS_Choice : // // There can only be one child, and it must be one of the // two types we stored. @@ -349,7 +351,7 @@ // content check. // unsigned int index; - switch(fOp) + switch(fOp & 0x0f) { case ContentSpecNode::Leaf : // @@ -429,7 +431,6 @@ break; case ContentSpecNode::Choice : - case ContentSpecNode::Any_NS_Choice : // // There can only be one child, and it must be one of the // two types we stored. 1.43 +6 -9 xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp Index: SchemaValidator.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- SchemaValidator.cpp 12 Nov 2003 20:35:31 -0000 1.42 +++ SchemaValidator.cpp 20 Nov 2003 18:12:20 -0000 1.43 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.43 2003/11/20 18:12:20 knoaman + * Use a bitwise operation to check the node type. + * * Revision 1.42 2003/11/12 20:35:31 peiyongz * Stateless Grammar: ValidationContext * @@ -1348,13 +1351,13 @@ ContentSpecNode::NodeTypes curNodeType = curSpecNode->getType(); ContentSpecNode::NodeTypes baseNodeType = baseSpecNode->getType(); - if (curNodeType == ContentSpecNode::Sequence || + if ((curNodeType & 0x0f) == ContentSpecNode::Sequence || (curNodeType & 0x0f) == ContentSpecNode::Choice || curNodeType == ContentSpecNode::All) { curSpecNode = checkForPointlessOccurrences(curSpecNode, curNodeType, &curVector); } - if (baseNodeType == ContentSpecNode::Sequence || + if ((baseNodeType & 0x0f) == ContentSpecNode::Sequence || (baseNodeType & 0x0f) == ContentSpecNode::Choice || baseNodeType == ContentSpecNode::All) { baseSpecNode = checkForPointlessOccurrences(baseSpecNode, baseNodeType, &baseVector); @@ -1380,7 +1383,6 @@ return; } case ContentSpecNode::Choice: - case ContentSpecNode::Any_NS_Choice: case ContentSpecNode::Sequence: case ContentSpecNode::All: { @@ -1407,7 +1409,6 @@ return; } case ContentSpecNode::Choice: - case ContentSpecNode::Any_NS_Choice: case ContentSpecNode::Sequence: case ContentSpecNode::All: case ContentSpecNode::Leaf: @@ -1437,7 +1438,6 @@ return; } case ContentSpecNode::Choice: - case ContentSpecNode::Any_NS_Choice: case ContentSpecNode::Sequence: case ContentSpecNode::Leaf: { @@ -1450,7 +1450,6 @@ } } case ContentSpecNode::Choice: - case ContentSpecNode::Any_NS_Choice: { switch (baseNodeType & 0x0f) { case ContentSpecNode::Any: @@ -1461,7 +1460,6 @@ return; } case ContentSpecNode::Choice: - case ContentSpecNode::Any_NS_Choice: { checkRecurse(aGrammar, curSpecNode, derivedScope, &curVector, baseSpecNode, baseScope, &baseVector, baseInfo, true); @@ -1502,7 +1500,6 @@ return; } case ContentSpecNode::Choice: - case ContentSpecNode::Any_NS_Choice: { checkMapAndSum(aGrammar, curSpecNode, &curVector, derivedScope, baseSpecNode, &baseVector, baseScope, baseInfo); @@ -1572,7 +1569,7 @@ else if (!rightNode) { gatherChildren(nodeType, specNode->getFirst(), nodes); } - else if (parentNodeType == nodeType) { + else if ((parentNodeType & 0x0f) == (nodeType & 0x0f)) { gatherChildren(nodeType, specNode->getFirst(), nodes); gatherChildren(nodeType, rightNode, nodes);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]