From a6963d03a112ede0dedd2cfde15bc692230724c7 Mon Sep 17 00:00:00 2001 From: Khaled Noaman <knoaman@apache.org> Date: Thu, 4 Apr 2002 14:42:41 +0000 Subject: [PATCH] Change min/maxOccurs from unsigned int to int. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@173611 13f79535-47bb-0310-9956-ffa450edef68 --- .../validators/common/ContentSpecNode.hpp | 23 +++++++++++-------- .../validators/schema/TraverseSchema.cpp | 22 ++++++++++++++---- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/xercesc/validators/common/ContentSpecNode.hpp b/src/xercesc/validators/common/ContentSpecNode.hpp index 52a0e1353..90a59707c 100644 --- a/src/xercesc/validators/common/ContentSpecNode.hpp +++ b/src/xercesc/validators/common/ContentSpecNode.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2002/04/04 14:42:41 knoaman + * Change min/maxOccurs from unsigned int to int. + * * Revision 1.2 2002/03/21 15:41:48 knoaman * Move behavior from TraverseSchema. * @@ -214,8 +217,8 @@ public : NodeTypes getType() const; ContentSpecNode* orphanFirst(); ContentSpecNode* orphanSecond(); - unsigned int getMinOccurs() const; - unsigned int getMaxOccurs() const; + int getMinOccurs() const; + int getMaxOccurs() const; bool isFirstAdopted() const; bool isSecondAdopted() const; @@ -227,8 +230,8 @@ public : void setFirst(ContentSpecNode* const toAdopt); void setSecond(ContentSpecNode* const toAdopt); void setType(const NodeTypes type); - void setMinOccurs(unsigned int min); - void setMaxOccurs(unsigned int max); + void setMinOccurs(int min); + void setMaxOccurs(int max); void setAdoptFirst(bool adoptFirst); void setAdoptSecond(bool adoptSecond); @@ -291,8 +294,8 @@ private : NodeTypes fType; bool fAdoptFirst; bool fAdoptSecond; - unsigned int fMinOccurs; - unsigned int fMaxOccurs; + int fMinOccurs; + int fMaxOccurs; }; // --------------------------------------------------------------------------- @@ -436,12 +439,12 @@ inline ContentSpecNode* ContentSpecNode::orphanSecond() return retNode; } -inline unsigned int ContentSpecNode::getMinOccurs() const +inline int ContentSpecNode::getMinOccurs() const { return fMinOccurs; } -inline unsigned int ContentSpecNode::getMaxOccurs() const +inline int ContentSpecNode::getMaxOccurs() const { return fMaxOccurs; } @@ -487,12 +490,12 @@ inline void ContentSpecNode::setType(const NodeTypes type) fType = type; } -inline void ContentSpecNode::setMinOccurs(unsigned int min) +inline void ContentSpecNode::setMinOccurs(int min) { fMinOccurs = min; } -inline void ContentSpecNode::setMaxOccurs(unsigned int max) +inline void ContentSpecNode::setMaxOccurs(int max) { fMaxOccurs = max; } diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index 88923f55f..e7dbf0da0 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -5314,10 +5314,10 @@ void TraverseSchema::processAttributeDeclRef(const IDOM_Element* const elem, void TraverseSchema::checkMinMax(ContentSpecNode* const specNode, const IDOM_Element* const elem, - const int allContextFlag) { + const int allContextFlag) { - unsigned int minOccurs = 1; - unsigned int maxOccurs = 1; + int minOccurs = 1; + int maxOccurs = 1; const XMLCh* minOccursStr = getElementAttValue(elem, SchemaSymbols::fgATT_MINOCCURS, true); const XMLCh* maxOccursStr = getElementAttValue(elem, SchemaSymbols::fgATT_MAXOCCURS, true); @@ -5326,7 +5326,13 @@ void TraverseSchema::checkMinMax(ContentSpecNode* const specNode, minOccurs = specNode->getMinOccurs(); } else { - XMLString::textToBin(minOccursStr, minOccurs); + try { + minOccurs = XMLString::parseInt(minOccursStr); + } + catch (...) { + minOccurs = 1; + } + if (specNode) specNode->setMinOccurs(minOccurs); } @@ -5344,7 +5350,13 @@ void TraverseSchema::checkMinMax(ContentSpecNode* const specNode, maxOccurs = specNode->getMaxOccurs(); } else { - XMLString::textToBin(maxOccursStr, maxOccurs); + try { + maxOccurs = XMLString::parseInt(maxOccursStr); + } + catch(...) { + maxOccurs = minOccurs; + } + if (specNode) specNode->setMaxOccurs(maxOccurs); } -- GitLab