knoaman 2003/11/07 09:08:12
Modified: c/src/xercesc/validators/common CMBinaryOp.cpp
ContentSpecNode.cpp ContentSpecNode.hpp
DFAContentModel.cpp MixedContentModel.cpp
SimpleContentModel.cpp
c/src/xercesc/validators/schema ComplexTypeInfo.cpp
SchemaValidator.cpp TraverseSchema.cpp
Log:
For PSVI support, distinguish wildcard elements with namespace lists.
Revision Changes Path
1.4 +7 -4 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.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CMBinaryOp.cpp 15 May 2003 18:48:27 -0000 1.3
+++ CMBinaryOp.cpp 7 Nov 2003 17:08:11 -0000 1.4
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.4 2003/11/07 17:08:11 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.3 2003/05/15 18:48:27 knoaman
* Partial implementation of the configurable memory manager.
*
@@ -116,7 +119,7 @@
, fRightChild(rightToAdopt)
{
// Insure that its one of the types we require
- if ((type != ContentSpecNode::Choice)
+ if (((type & 0x0f) != ContentSpecNode::Choice)
&& (type != ContentSpecNode::Sequence))
{
ThrowXML(RuntimeException, XMLExcepts::CM_BinOpHadUnaryType);
@@ -164,7 +167,7 @@
// this node is nullable. If its a concatenation, then both of
// them have to be nullable.
//
- if (getType() == ContentSpecNode::Choice)
+ if ((getType() & 0x0f) == ContentSpecNode::Choice)
return (fLeftChild->isNullable() || fRightChild->isNullable());
return (fLeftChild->isNullable() && fRightChild->isNullable());
@@ -176,7 +179,7 @@
// ---------------------------------------------------------------------------
void CMBinaryOp::calcFirstPos(CMStateSet& toSet) const
{
- if (getType() == ContentSpecNode::Choice)
+ if ((getType() & 0x0f) == ContentSpecNode::Choice)
{
// Its the the union of the first positions of our children.
toSet = fLeftChild->getFirstPos();
@@ -197,7 +200,7 @@
void CMBinaryOp::calcLastPos(CMStateSet& toSet) const
{
- if (getType() == ContentSpecNode::Choice)
+ if ((getType() & 0x0f) == ContentSpecNode::Choice)
{
// Its the the union of the first positions of our children.
toSet = fLeftChild->getLastPos();
1.10 +6 -5 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.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ContentSpecNode.cpp 26 Sep 2003 18:29:27 -0000 1.9
+++ ContentSpecNode.cpp 7 Nov 2003 17:08:11 -0000 1.10
@@ -171,6 +171,7 @@
break;
case ContentSpecNode::Choice :
+ case ContentSpecNode::Any_NS_Choice:
if (parentType != curType)
bufToFill.append(chOpenParen);
formatNode(first, curType, bufToFill);
@@ -234,7 +235,7 @@
if (fType == ContentSpecNode::Sequence
|| fType == ContentSpecNode::All
- || fType == ContentSpecNode::Choice) {
+ || (fType & 0x0f) == ContentSpecNode::Choice) {
int minFirst = fFirst->getMinTotalRange();
@@ -242,7 +243,7 @@
int minSecond = fSecond->getMinTotalRange();
- if (fType == ContentSpecNode::Choice) {
+ if ((fType & 0x0f) == ContentSpecNode::Choice) {
min = min * ((minFirst < minSecond)? minFirst : minSecond);
}
else {
@@ -266,7 +267,7 @@
if (fType == ContentSpecNode::Sequence
|| fType == ContentSpecNode::All
- || fType == ContentSpecNode::Choice) {
+ || (fType & 0x0f) == ContentSpecNode::Choice) {
int maxFirst = fFirst->getMaxTotalRange();
@@ -283,7 +284,7 @@
}
else {
- if (fType == ContentSpecNode::Choice) {
+ if ((fType & 0x0f) == ContentSpecNode::Choice) {
max = max * (maxFirst > maxSecond) ? maxFirst : maxSecond;
}
else {
1.9 +4 -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.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ContentSpecNode.hpp 26 Sep 2003 18:29:27 -0000 1.8
+++ ContentSpecNode.hpp 7 Nov 2003 17:08:11 -0000 1.9
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.9 2003/11/07 17:08:11 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.8 2003/09/26 18:29:27 peiyongz
* Implement serialization/deserialization
*
@@ -196,6 +199,7 @@
, Any_Other
, Any_NS = 8
, All = 9
+ , Any_NS_Choice = 20
, Any_Lax = 22
, Any_Other_Lax = 23
, Any_NS_Lax = 24
1.8 +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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DFAContentModel.cpp 18 May 2003 14:02:06 -0000 1.7
+++ DFAContentModel.cpp 7 Nov 2003 17:08:11 -0000 1.8
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.8 2003/11/07 17:08:11 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.7 2003/05/18 14:02:06 knoaman
* Memory manager implementation: pass per instance manager.
*
@@ -1090,7 +1093,7 @@
ContentSpecNode* leftNode = curNode->getFirst();
ContentSpecNode* rightNode = curNode->getSecond();
- if ((curType == ContentSpecNode::Choice)
+ if (((curType & 0x0f) == ContentSpecNode::Choice)
|| (curType == ContentSpecNode::Sequence))
{
//
@@ -1134,7 +1137,7 @@
// Get the spec type of the passed node
const ContentSpecNode::NodeTypes curType = curNode->getType();
- if (curType == ContentSpecNode::Choice)
+ if ((curType & 0x0f) == ContentSpecNode::Choice)
{
// Just recurse
calcFollowList(((CMBinaryOp*)curNode)->getLeft());
@@ -1246,7 +1249,7 @@
fLeafListType[newIndex] = curType;
++newIndex;
}
- else if ((curType == ContentSpecNode::Choice)
+ else if (((curType & 0x0f) == ContentSpecNode::Choice)
|| (curType == ContentSpecNode::Sequence))
{
newIndex = postTreeBuildInit(((CMBinaryOp*)nodeCur)->getLeft(), newIndex);
1.7 +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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- MixedContentModel.cpp 18 May 2003 14:02:06 -0000 1.6
+++ MixedContentModel.cpp 7 Nov 2003 17:08:11 -0000 1.7
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.7 2003/11/07 17:08:11 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.6 2003/05/18 14:02:06 knoaman
* Memory manager implementation: pass per instance manager.
*
@@ -481,7 +484,7 @@
ContentSpecNode* rightNode = curNode->getSecond();
// And recurse according to the type of node
- if ((curType == ContentSpecNode::Choice)
+ if (((curType & 0x0f) == ContentSpecNode::Choice)
|| (curType == ContentSpecNode::Sequence))
{
// Recurse on the left and right nodes
1.5 +6 -1
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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SimpleContentModel.cpp 4 Nov 2002 14:54:58 -0000 1.4
+++ SimpleContentModel.cpp 7 Nov 2003 17:08:11 -0000 1.5
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.5 2003/11/07 17:08:11 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.4 2002/11/04 14:54:58 tng
* C++ Namespace Support.
*
@@ -258,6 +261,7 @@
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.
@@ -425,6 +429,7 @@
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.
@@ -521,7 +526,7 @@
fSecondChild->setURI(pContentSpecOrgURI[orgURIIndex]);
// only possible violation is when it's a choice
- if (fOp == ContentSpecNode::Choice) {
+ if ((fOp & 0x0f) == ContentSpecNode::Choice) {
SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool);
1.17 +5 -2 xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp
Index: ComplexTypeInfo.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/ComplexTypeInfo.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- ComplexTypeInfo.cpp 29 Oct 2003 16:22:58 -0000 1.16
+++ ComplexTypeInfo.cpp 7 Nov 2003 17:08:12 -0000 1.17
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.17 2003/11/07 17:08:12 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.16 2003/10/29 16:22:58 peiyongz
* allow proper recreation of ContentModel from deserialization
*
@@ -590,7 +593,7 @@
, fMemoryManager
);
}
- else if ((specType == ContentSpecNode::Choice)
+ else if (((specType & 0x0f) == ContentSpecNode::Choice)
|| (specType == ContentSpecNode::Sequence))
{
//
@@ -679,7 +682,7 @@
{
retNode = expandContentModel(curNode, minOccurs, maxOccurs);
}
- else if ((curType == ContentSpecNode::Choice)
+ else if (((curType & 0x0f) == ContentSpecNode::Choice)
|| (curType == ContentSpecNode::All)
|| (curType == ContentSpecNode::Sequence))
{
1.40 +12 -3 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.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- SchemaValidator.cpp 5 Oct 2003 02:09:37 -0000 1.39
+++ SchemaValidator.cpp 7 Nov 2003 17:08:12 -0000 1.40
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.40 2003/11/07 17:08:12 knoaman
+ * For PSVI support, distinguish wildcard elements with namespace lists.
+ *
* Revision 1.39 2003/10/05 02:09:37 neilg
* the validator now keeps track of the current complex and simple type (including
if this is an xsi:type). This allows both the validator and the scanner to know what
the current type is, without the need to modify the element declaration each time an
xsi:type is seen
*
@@ -1404,13 +1407,13 @@
ContentSpecNode::NodeTypes baseNodeType = baseSpecNode->getType();
if (curNodeType == ContentSpecNode::Sequence ||
- curNodeType == ContentSpecNode::Choice ||
+ (curNodeType & 0x0f) == ContentSpecNode::Choice ||
curNodeType == ContentSpecNode::All) {
curSpecNode = checkForPointlessOccurrences(curSpecNode, curNodeType,
&curVector);
}
if (baseNodeType == ContentSpecNode::Sequence ||
- baseNodeType == ContentSpecNode::Choice ||
+ (baseNodeType & 0x0f) == ContentSpecNode::Choice ||
baseNodeType == ContentSpecNode::All) {
baseSpecNode = checkForPointlessOccurrences(baseSpecNode, baseNodeType,
&baseVector);
}
@@ -1435,6 +1438,7 @@
return;
}
case ContentSpecNode::Choice:
+ case ContentSpecNode::Any_NS_Choice:
case ContentSpecNode::Sequence:
case ContentSpecNode::All:
{
@@ -1461,6 +1465,7 @@
return;
}
case ContentSpecNode::Choice:
+ case ContentSpecNode::Any_NS_Choice:
case ContentSpecNode::Sequence:
case ContentSpecNode::All:
case ContentSpecNode::Leaf:
@@ -1490,6 +1495,7 @@
return;
}
case ContentSpecNode::Choice:
+ case ContentSpecNode::Any_NS_Choice:
case ContentSpecNode::Sequence:
case ContentSpecNode::Leaf:
{
@@ -1502,6 +1508,7 @@
}
}
case ContentSpecNode::Choice:
+ case ContentSpecNode::Any_NS_Choice:
{
switch (baseNodeType & 0x0f) {
case ContentSpecNode::Any:
@@ -1512,6 +1519,7 @@
return;
}
case ContentSpecNode::Choice:
+ case ContentSpecNode::Any_NS_Choice:
{
checkRecurse(aGrammar, curSpecNode, derivedScope, &curVector,
baseSpecNode, baseScope, &baseVector, baseInfo,
true);
@@ -1552,6 +1560,7 @@
return;
}
case ContentSpecNode::Choice:
+ case ContentSpecNode::Any_NS_Choice:
{
checkMapAndSum(aGrammar, curSpecNode, &curVector, derivedScope,
baseSpecNode, &baseVector, baseScope, baseInfo);
@@ -1896,7 +1905,7 @@
derivedNodes.addElement(derivedSpecNode);
- if (baseSpecNode->getType() == ContentSpecNode::Choice) {
+ if ((baseSpecNode->getType() & 0x0f) == ContentSpecNode::Choice) {
toLax = true;
}
1.92 +2 -2 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp
Index: TraverseSchema.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -r1.91 -r1.92
--- TraverseSchema.cpp 6 Nov 2003 19:28:11 -0000 1.91
+++ TraverseSchema.cpp 7 Nov 2003 17:08:12 -0000 1.92
@@ -1853,7 +1853,7 @@
else {
secondNode = new (fGrammarPoolMemoryManager) ContentSpecNode
(
- ContentSpecNode::Choice
+ ContentSpecNode::Any_NS_Choice
, secondNode
, firstNode
, true
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]