diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.cpp b/src/xercesc/dom/impl/DOMImplementationImpl.cpp index 26e03b1c54fa5345f57b9720f2727abe6dcef3e1..85201ea7f6618eac38c11a698c16af11fda7b4cb 100644 --- a/src/xercesc/dom/impl/DOMImplementationImpl.cpp +++ b/src/xercesc/dom/impl/DOMImplementationImpl.cpp @@ -186,23 +186,23 @@ bool DOMImplementationImpl::hasFeature(const XMLCh * feature, const XMLCh * bool version3_0 = XMLString::equals(version, g3_0); // Currently, we support only XML Level 1 version 1.0 - if (XMLString::compareIString(feature, XMLUni::fgXMLString) == 0 + if (XMLString::compareIStringASCII(feature, XMLUni::fgXMLString) == 0 && (anyVersion || version1_0 || version2_0)) return true; - if (XMLString::compareIString(feature, gCore) == 0 + if (XMLString::compareIStringASCII(feature, gCore) == 0 && (anyVersion || version1_0 || version2_0 || version3_0)) return true; - if (XMLString::compareIString(feature, gTrav) == 0 + if (XMLString::compareIStringASCII(feature, gTrav) == 0 && (anyVersion || version2_0)) return true; - if (XMLString::compareIString(feature, gRange) == 0 + if (XMLString::compareIStringASCII(feature, gRange) == 0 && (anyVersion || version2_0)) return true; - if (XMLString::compareIString(feature, gLS) == 0 + if (XMLString::compareIStringASCII(feature, gLS) == 0 && (anyVersion || version3_0)) return true; diff --git a/src/xercesc/dom/impl/DOMWriterImpl.cpp b/src/xercesc/dom/impl/DOMWriterImpl.cpp index 2f56dd08e0d2787366daeed51aa179ec7652e518..99a834f7ec28b626baefb67e3bc29c454898f518 100644 --- a/src/xercesc/dom/impl/DOMWriterImpl.cpp +++ b/src/xercesc/dom/impl/DOMWriterImpl.cpp @@ -17,6 +17,9 @@ /* * $Id$ * $Log$ + * Revision 1.57 2005/03/20 19:02:45 cargilld + * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders. + * * Revision 1.56 2005/03/08 09:33:32 amassari * Redeclare a namespace binding if the prefix is already bound to a different namespace (jira# 1371) * @@ -1807,21 +1810,21 @@ void DOMWriterImpl::processBOM() if (!getFeature(BYTE_ORDER_MARK_ID)) return; - if ((XMLString::compareIString(fEncoding, XMLUni::fgUTF16LEncodingString) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUTF16LEncodingString2) == 0) ) + if ((XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16LEncodingString) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16LEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_utf16le, 2); } - else if ((XMLString::compareIString(fEncoding, XMLUni::fgUTF16BEncodingString) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUTF16BEncodingString2) == 0) ) + else if ((XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16BEncodingString) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16BEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_utf16be, 2); } - else if ((XMLString::compareIString(fEncoding, XMLUni::fgUTF16EncodingString) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUTF16EncodingString2) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUTF16EncodingString3) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUTF16EncodingString4) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUTF16EncodingString5) == 0) ) + else if ((XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString2) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString3) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString4) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUTF16EncodingString5) == 0) ) { #if defined(ENDIANMODE_LITTLE) fFormatter->writeBOM(BOM_utf16le, 2); @@ -1829,19 +1832,19 @@ void DOMWriterImpl::processBOM() fFormatter->writeBOM(BOM_utf16be, 2); #endif } - else if ((XMLString::compareIString(fEncoding, XMLUni::fgUCS4LEncodingString) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUCS4LEncodingString2) == 0) ) + else if ((XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4LEncodingString) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4LEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_ucs4le, 4); } - else if ((XMLString::compareIString(fEncoding, XMLUni::fgUCS4BEncodingString) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUCS4BEncodingString2) == 0) ) + else if ((XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4BEncodingString) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4BEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_ucs4be, 4); } - else if ((XMLString::compareIString(fEncoding, XMLUni::fgUCS4EncodingString) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUCS4EncodingString2) == 0) || - (XMLString::compareIString(fEncoding, XMLUni::fgUCS4EncodingString3) == 0) ) + else if ((XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4EncodingString) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4EncodingString2) == 0) || + (XMLString::compareIStringASCII(fEncoding, XMLUni::fgUCS4EncodingString3) == 0) ) { #if defined(ENDIANMODE_LITTLE) fFormatter->writeBOM(BOM_ucs4le, 4); diff --git a/src/xercesc/internal/XMLReader.cpp b/src/xercesc/internal/XMLReader.cpp index b8b45e2d76dd4ef15fa27aa5a8b7a1b37e6d2342..19aaa7f40a3c1d9bd40b8a9c9fa8c51933bbc28e 100644 --- a/src/xercesc/internal/XMLReader.cpp +++ b/src/xercesc/internal/XMLReader.cpp @@ -207,7 +207,7 @@ XMLReader::XMLReader(const XMLCh* const pubId // Copy the encoding string to our member fEncodingStr = XMLString::replicate(encodingStr, fMemoryManager); - XMLString::upperCase(fEncodingStr); + XMLString::upperCaseASCII(fEncodingStr); // Ask the transcoding service if it supports src offset info fSrcOfsSupported = XMLPlatformUtils::fgTransService->supportsSrcOfs(); @@ -1003,7 +1003,7 @@ bool XMLReader::setEncoding(const XMLCh* const newEncoding) // upperCase the newEncoding first for better performance // XMLCh* inputEncoding = XMLString::replicate(newEncoding, fMemoryManager); - XMLString::upperCase(inputEncoding); + XMLString::upperCaseASCII(inputEncoding); // // Try to map the string to one of our standard encodings. If its not diff --git a/src/xercesc/internal/XMLScanner.cpp b/src/xercesc/internal/XMLScanner.cpp index 44c7fff8bb3857c589494c247aadc740c8c6eaf6..997b80738b08ebecb3f52a9e912067c66564081c 100644 --- a/src/xercesc/internal/XMLScanner.cpp +++ b/src/xercesc/internal/XMLScanner.cpp @@ -1059,7 +1059,11 @@ void XMLScanner::scanPI() namePtr = bbName.getRawBuffer(); // See if it is some form of 'xml' and emit a warning - if (!XMLString::compareIString(namePtr, XMLUni::fgXMLString)) + //if (!XMLString::compareIString(namePtr, XMLUni::fgXMLString)) + if (bbName.getLen() == 3 && + (((namePtr[0] == chLatin_x) || (namePtr[0] == chLatin_X)) && + ((namePtr[1] == chLatin_m) || (namePtr[1] == chLatin_M)) && + ((namePtr[2] == chLatin_l) || (namePtr[2] == chLatin_L)))) emitError(XMLErrs::NoPIStartsWithXML); // If namespaces are enabled, then no colons allowed @@ -1418,9 +1422,17 @@ void XMLScanner::scanXMLDecl(const DeclTypes type) else { emitError(XMLErrs::BadStandalone); - if (!XMLString::compareIString(rawValue, XMLUni::fgYesString)) + //if (!XMLString::compareIString(rawValue, XMLUni::fgYesString)) + //else if (!XMLString::compareIString(rawValue, XMLUni::fgNoString)) + if (buffers[curString]->getLen() == 3 && + (((rawValue[0] == chLatin_y) || (rawValue[0] == chLatin_Y)) && + ((rawValue[1] == chLatin_e) || (rawValue[1] == chLatin_E)) && + ((rawValue[2] == chLatin_s) || (rawValue[2] == chLatin_S)))) + fStandalone = true; + else if (buffers[curString]->getLen() == 2 && + (((rawValue[0] == chLatin_n) || (rawValue[0] == chLatin_N)) && + ((rawValue[1] == chLatin_o) || (rawValue[1] == chLatin_O)))) fStandalone = true; - else if (!XMLString::compareIString(rawValue, XMLUni::fgNoString)) fStandalone = false; } } diff --git a/src/xercesc/parsers/DOMBuilderImpl.cpp b/src/xercesc/parsers/DOMBuilderImpl.cpp index a978290baded10fa58d70b0a484b821f73141fa7..bbc3e411a0859cdebee5063e7ce17892b354b0c0 100644 --- a/src/xercesc/parsers/DOMBuilderImpl.cpp +++ b/src/xercesc/parsers/DOMBuilderImpl.cpp @@ -125,22 +125,22 @@ void DOMBuilderImpl::setFilter(DOMBuilderFilter* const) // --------------------------------------------------------------------------- void DOMBuilderImpl::setFeature(const XMLCh* const name, const bool state) { - if (XMLString::compareIString(name, XMLUni::fgDOMEntities) == 0) { + if (XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities) == 0) { setCreateEntityReferenceNodes(state); } - else if (XMLString::compareIString(name, XMLUni::fgDOMComments) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments) == 0) { setCreateCommentNodes(state); } - else if (XMLString::compareIString(name, XMLUni::fgDOMDatatypeNormalization) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization) == 0) { getScanner()->setNormalizeData(state); } - else if (XMLString::compareIString(name, XMLUni::fgDOMNamespaces) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces) == 0) { setDoNamespaces(state); } - else if (XMLString::compareIString(name, XMLUni::fgDOMWhitespaceInElementContent) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMWhitespaceInElementContent) == 0) { setIncludeIgnorableWhitespace(state); } - else if (XMLString::compareIString(name, XMLUni::fgDOMValidation) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidation) == 0) { fValidation = state; @@ -152,7 +152,7 @@ void DOMBuilderImpl::setFeature(const XMLCh* const name, const bool state) setValidationScheme(AbstractDOMParser::Val_Never); } } - else if (XMLString::compareIString(name, XMLUni::fgDOMValidateIfSchema) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema) == 0) { fAutoValidation = state; @@ -163,30 +163,30 @@ void DOMBuilderImpl::setFeature(const XMLCh* const name, const bool state) setValidationScheme(AbstractDOMParser::Val_Never); } } - else if (XMLString::compareIString(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) { // in fact, setting this has no effect to the parser fCharsetOverridesXMLEncoding = state; } - else if (XMLString::compareIString(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMInfoset) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMCanonicalForm) == 0 ) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm) == 0 ) { if (state) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } - else if (XMLString::compareIString(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMCDATASections) == 0 ) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections) == 0 ) { if (!state) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchema) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) { setDoSchema(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaFullChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) { setValidationSchemaFullChecking(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) { if(state) fUserAdoptsDocument = true; @@ -194,56 +194,56 @@ void DOMBuilderImpl::setFeature(const XMLCh* const name, const bool state) fUserAdoptsDocument = false; } - else if (XMLString::compareIString(name, XMLUni::fgXercesLoadExternalDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) { setLoadExternalDTD(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesContinueAfterFatalError) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) { setExitOnFirstFatalError(!state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) { setValidationConstraintFatal(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) { getScanner()->cacheGrammarFromParse(state); if (state) getScanner()->useCachedGrammarInParse(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) { if (state || !getScanner()->isCachingGrammarFromParse()) getScanner()->useCachedGrammarInParse(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesCalculateSrcOfs) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) { getScanner()->setCalculateSrcOfs(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesStandardUriConformant) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) { getScanner()->setStandardUriConformant(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) { setCreateSchemaInfo(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) { getScanner()->setGenerateSyntheticAnnotations(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesValidateAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) { getScanner()->setValidateAnnotations(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) { getScanner()->setIdentityConstraintChecking(state); } - else if (XMLString::compareIString(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) { getScanner()->setIgnoredCachedDTD(state); } @@ -254,98 +254,98 @@ void DOMBuilderImpl::setFeature(const XMLCh* const name, const bool state) bool DOMBuilderImpl::getFeature(const XMLCh* const name) const { - if (XMLString::compareIString(name, XMLUni::fgDOMEntities) == 0) { + if (XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities) == 0) { return getCreateEntityReferenceNodes(); } - else if (XMLString::compareIString(name, XMLUni::fgDOMComments) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments) == 0) { return getCreateCommentNodes(); } - else if (XMLString::compareIString(name, XMLUni::fgDOMDatatypeNormalization) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization) == 0) { return getScanner()->getNormalizeData(); } - else if (XMLString::compareIString(name, XMLUni::fgDOMNamespaces) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces) == 0) { return getDoNamespaces(); } - else if (XMLString::compareIString(name, XMLUni::fgDOMWhitespaceInElementContent) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMWhitespaceInElementContent) == 0) { return getIncludeIgnorableWhitespace(); } - else if (XMLString::compareIString(name, XMLUni::fgDOMValidation) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidation) == 0) { return fValidation; } - else if (XMLString::compareIString(name, XMLUni::fgDOMValidateIfSchema) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema) == 0) { return fAutoValidation; } - else if (XMLString::compareIString(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) { return fCharsetOverridesXMLEncoding; } - else if (XMLString::compareIString(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMInfoset) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMCanonicalForm) == 0 ) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm) == 0 ) { return false; } - else if (XMLString::compareIString(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMCDATASections) == 0 ) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections) == 0 ) { return true; } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchema) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) { return getDoSchema(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaFullChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) { return getValidationSchemaFullChecking(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) { return getIdentityConstraintChecking(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesLoadExternalDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) { return getLoadExternalDTD(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesContinueAfterFatalError) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) { return !getExitOnFirstFatalError(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) { return getValidationConstraintFatal(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) { return getScanner()->isCachingGrammarFromParse(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) { return getScanner()->isUsingCachedGrammarInParse(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesCalculateSrcOfs) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) { return getScanner()->getCalculateSrcOfs(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesStandardUriConformant) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) { return getScanner()->getStandardUriConformant(); } - else if(XMLString::compareIString(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) { + else if(XMLString::compareIStringASCII(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) { return fUserAdoptsDocument; } - else if (XMLString::compareIString(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) { return getCreateSchemaInfo(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) { return getScanner()->getGenerateSyntheticAnnotations(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesValidateAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) { return getScanner()->getValidateAnnotations(); } - else if (XMLString::compareIString(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) { return getScanner()->getIgnoreCachedDTD(); } @@ -358,44 +358,44 @@ bool DOMBuilderImpl::getFeature(const XMLCh* const name) const bool DOMBuilderImpl::canSetFeature(const XMLCh* const name, const bool state) const { - if ((XMLString::compareIString(name, XMLUni::fgDOMEntities) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMComments) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMDatatypeNormalization) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMNamespaces) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMValidation) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMValidateIfSchema) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) || - (XMLString::compareIString(name, XMLUni::fgDOMWhitespaceInElementContent) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesCalculateSrcOfs) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesStandardUriConformant) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesValidateAnnotations) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) + if ((XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidation) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgDOMWhitespaceInElementContent) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) ) { return true; } - else if (XMLString::compareIString(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMInfoset) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMCanonicalForm) == 0 ) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm) == 0 ) { if (!state) return true; } - else if (XMLString::compareIString(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || - XMLString::compareIString(name, XMLUni::fgDOMCDATASections) == 0 ) { + else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || + XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections) == 0 ) { if (state) return true; } - else if ((XMLString::compareIString(name, XMLUni::fgXercesSchema) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesSchemaFullChecking) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesLoadExternalDTD) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesContinueAfterFatalError) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) || - (XMLString::compareIString(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0)) { + else if ((XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) || + (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0)) { return true; } return false; @@ -407,16 +407,16 @@ bool DOMBuilderImpl::canSetFeature(const XMLCh* const name, const bool state) co // --------------------------------------------------------------------------- void DOMBuilderImpl::setProperty(const XMLCh* const name, void* value) { - if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) + if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) { setExternalSchemaLocation((XMLCh*)value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) { setExternalNoNamespaceSchemaLocation((XMLCh*)value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSecurityManager) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) { setSecurityManager((SecurityManager*)value); } @@ -436,11 +436,11 @@ void DOMBuilderImpl::setProperty(const XMLCh* const name, void* value) void* DOMBuilderImpl::getProperty(const XMLCh* const name) const { - if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) + if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) return (void*)getExternalSchemaLocation(); - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) return (void*)getExternalNoNamespaceSchemaLocation(); - else if (XMLString::compareIString(name, XMLUni::fgXercesSecurityManager) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) return (void*)getSecurityManager(); else throw DOMException(DOMException::NOT_FOUND_ERR, 0, getMemoryManager()); diff --git a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp index cf5c4d5ab426d30384461afea327350c9feacd98..93761d87980a66187379d7aa276b7ce6be36d494 100644 --- a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp +++ b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.44 2005/03/20 19:02:45 cargilld + * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders. + * * Revision 1.43 2005/02/25 11:31:07 amassari * Performance improvements by David Bertoni (jira# 1343) * @@ -1487,11 +1490,11 @@ void SAX2XMLReaderImpl::setFeature(const XMLCh* const name, const bool value) if (fParseInProgress) throw SAXNotSupportedException("Feature modification is not supported during parse.", fMemoryManager); - if (XMLString::compareIString(name, XMLUni::fgSAX2CoreNameSpaces) == 0) + if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpaces) == 0) { setDoNamespaces(value); } - else if (XMLString::compareIString(name, XMLUni::fgSAX2CoreValidation) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreValidation) == 0) { fValidation = value; if (fValidation) @@ -1502,11 +1505,11 @@ void SAX2XMLReaderImpl::setFeature(const XMLCh* const name, const bool value) else setValidationScheme(Val_Never); } - else if (XMLString::compareIString(name, XMLUni::fgSAX2CoreNameSpacePrefixes) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpacePrefixes) == 0) { fNamespacePrefix = value; } - else if (XMLString::compareIString(name, XMLUni::fgXercesDynamic) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDynamic) == 0) { fAutoValidation = value; // for auto validation, the sax2 core validation feature must also be enabled. @@ -1518,59 +1521,59 @@ void SAX2XMLReaderImpl::setFeature(const XMLCh* const name, const bool value) else setValidationScheme(Val_Never); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchema) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) { setDoSchema(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaFullChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) { fScanner->setValidationSchemaFullChecking(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) { fScanner->setIdentityConstraintChecking(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesLoadExternalDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) { fScanner->setLoadExternalDTD(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesContinueAfterFatalError) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) { fScanner->setExitOnFirstFatal(!value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) { fScanner->setValidationConstraintFatal(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) { fScanner->cacheGrammarFromParse(value); if (value) fScanner->useCachedGrammarInParse(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) { if (value || !fScanner->isCachingGrammarFromParse()) fScanner->useCachedGrammarInParse(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesCalculateSrcOfs) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) { fScanner->setCalculateSrcOfs(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesStandardUriConformant) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) { fScanner->setStandardUriConformant(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) { fScanner->setGenerateSyntheticAnnotations(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesValidateAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) { fScanner->setValidateAnnotations(value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) { fScanner->setIgnoredCachedDTD(value); } @@ -1580,39 +1583,39 @@ void SAX2XMLReaderImpl::setFeature(const XMLCh* const name, const bool value) bool SAX2XMLReaderImpl::getFeature(const XMLCh* const name) const { - if (XMLString::compareIString(name, XMLUni::fgSAX2CoreNameSpaces) == 0) + if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpaces) == 0) return getDoNamespaces(); - else if (XMLString::compareIString(name, XMLUni::fgSAX2CoreValidation) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreValidation) == 0) return fValidation; - else if (XMLString::compareIString(name, XMLUni::fgSAX2CoreNameSpacePrefixes) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpacePrefixes) == 0) return fNamespacePrefix; - else if (XMLString::compareIString(name, XMLUni::fgXercesDynamic) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDynamic) == 0) return fAutoValidation; - else if (XMLString::compareIString(name, XMLUni::fgXercesSchema) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) return getDoSchema(); - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaFullChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) return fScanner->getValidationSchemaFullChecking(); - else if (XMLString::compareIString(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) return fScanner->getIdentityConstraintChecking(); - else if (XMLString::compareIString(name, XMLUni::fgXercesLoadExternalDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) return fScanner->getLoadExternalDTD(); - else if (XMLString::compareIString(name, XMLUni::fgXercesContinueAfterFatalError) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) return !fScanner->getExitOnFirstFatal(); - else if (XMLString::compareIString(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) return fScanner->getValidationConstraintFatal(); - else if (XMLString::compareIString(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) return fScanner->isCachingGrammarFromParse(); - else if (XMLString::compareIString(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) return fScanner->isUsingCachedGrammarInParse(); - else if (XMLString::compareIString(name, XMLUni::fgXercesCalculateSrcOfs) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) return fScanner->getCalculateSrcOfs(); - else if (XMLString::compareIString(name, XMLUni::fgXercesStandardUriConformant) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) return fScanner->getStandardUriConformant(); - else if (XMLString::compareIString(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) return fScanner->getGenerateSyntheticAnnotations(); - else if (XMLString::compareIString(name, XMLUni::fgXercesValidateAnnotations) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) return fScanner->getValidateAnnotations(); - else if (XMLString::compareIString(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) return fScanner->getIgnoreCachedDTD(); else throw SAXNotRecognizedException("Unknown Feature", fMemoryManager); @@ -1625,15 +1628,15 @@ void SAX2XMLReaderImpl::setProperty(const XMLCh* const name, void* value) if (fParseInProgress) throw SAXNotSupportedException("Property modification is not supported during parse.", fMemoryManager); - if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) + if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) { fScanner->setExternalSchemaLocation((XMLCh*)value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) { fScanner->setExternalNoNamespaceSchemaLocation((XMLCh*)value); } - else if (XMLString::compareIString(name, XMLUni::fgXercesSecurityManager) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) { fScanner->setSecurityManager((SecurityManager*)value); } @@ -1662,11 +1665,11 @@ void SAX2XMLReaderImpl::setProperty(const XMLCh* const name, void* value) void* SAX2XMLReaderImpl::getProperty(const XMLCh* const name) const { - if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) + if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) return (void*)fScanner->getExternalSchemaLocation(); - else if (XMLString::compareIString(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) return (void*)fScanner->getExternalNoNamespaceSchemaLocation(); - else if (XMLString::compareIString(name, XMLUni::fgXercesSecurityManager) == 0) + else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) return (void*)fScanner->getSecurityManager(); else if (XMLString::equals(name, XMLUni::fgXercesScannerName)) return (void*)fScanner->getName(); diff --git a/src/xercesc/util/HexBin.cpp b/src/xercesc/util/HexBin.cpp index 8c80a2deca5d6687f02f2820562548c6519e567a..e4e1843254cafc998146ff30349e000db047130a 100644 --- a/src/xercesc/util/HexBin.cpp +++ b/src/xercesc/util/HexBin.cpp @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.8 2005/03/20 19:02:45 cargilld + * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders. + * * Revision 1.7 2005/01/07 15:12:10 amassari * Removed warnings * @@ -98,7 +101,7 @@ XMLCh* HexBin::getCanonicalRepresentation(const XMLCh* const hexData return 0; XMLCh* retStr = XMLString::replicate(hexData, manager); - XMLString::upperCase(retStr); + XMLString::upperCaseASCII(retStr); return retStr; } diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp index cb3be776351406a375e6eb6cfdbd6002370ad8f7..81beb591d251e0517b669ccda03f4632cb31422f 100644 --- a/src/xercesc/util/TransService.cpp +++ b/src/xercesc/util/TransService.cpp @@ -159,7 +159,7 @@ XMLTransService::makeNewTranscoderFor( const XMLCh* const encoding resValue = XMLTransService::InternalFailure; return 0; } - XMLString::upperCase(upBuf); + XMLString::upperCaseASCII(upBuf); ENameMap* ourMapping = gMappings->get(upBuf); // If we found it, then call the factory method for it diff --git a/src/xercesc/util/XMLString.cpp b/src/xercesc/util/XMLString.cpp index 89fc353d8d238a163fe0c629bb2f30ad1862cb12..0af072460ebae6b416da8568ee8a1565b84c4051 100644 --- a/src/xercesc/util/XMLString.cpp +++ b/src/xercesc/util/XMLString.cpp @@ -952,6 +952,49 @@ int XMLString::compareIString( const XMLCh* const str1 return XMLPlatformUtils::fgTransService->compareIString(str1, str2); } +int XMLString::compareIStringASCII( const XMLCh* const str1 + , const XMLCh* const str2) +{ + const XMLCh* psz1 = str1; + const XMLCh* psz2 = str2; + + if (psz1 == 0 || psz2 == 0) { + + if (psz1 == 0) { + return 0 - XMLString::stringLen(psz2); + } + else if (psz2 == 0) { + return XMLString::stringLen(psz1); + } + } + + XMLCh ch1; + XMLCh ch2; + + while (true) { + if (*psz1 >= chLatin_A && *psz1 <= chLatin_Z) + ch1 = *psz1 - chLatin_A + chLatin_a; + else + ch1 = *psz1; + if (*psz2 >= chLatin_A && *psz2 <= chLatin_Z) + ch2 = *psz2 - chLatin_A + chLatin_a; + else + ch2 = *psz2; + + // If an inequality, then return difference + if (ch1 != ch2) + return int(ch1) - int(ch2); + + // If either ended, then both ended, so equal + if (!ch1) + break; + + // Move upwards to next chars + psz1++; + psz2++; + } + return 0; +} int XMLString::compareNString( const XMLCh* const str1 , const XMLCh* const str2 @@ -1407,6 +1450,21 @@ void XMLString::upperCase(XMLCh* const toUpperCase) XMLPlatformUtils::fgTransService->upperCase(toUpperCase); } +void XMLString::upperCaseASCII(XMLCh* const toUpperCase) +{ + XMLCh* psz1 = toUpperCase; + + if (!psz1) + return; + + while (*psz1) { + if (*psz1 >= chLatin_a && *psz1 <= chLatin_z) + *psz1 = *psz1 - chLatin_a + chLatin_A; + + psz1++; + } +} + void XMLString::lowerCase(XMLCh* const toLowerCase) { diff --git a/src/xercesc/util/XMLString.hpp b/src/xercesc/util/XMLString.hpp index 418f72305080f129f61b4e2eec867846c425b981..606ece217acfa9eff087f9889edc7dbac59ce35d 100644 --- a/src/xercesc/util/XMLString.hpp +++ b/src/xercesc/util/XMLString.hpp @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.33 2005/03/20 19:02:45 cargilld + * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders. + * * Revision 1.32 2005/03/08 09:04:09 amassari * Improve performances of XMLString::tokenizeString (jira# 1363) - patch by Christian Will * @@ -342,6 +345,24 @@ public: , const XMLCh* const str2 ); + /** Lexicographically compares lowercase versions of <code>str1</code> and + * <code>str2</code> and returns a value indicating their relationship. + * The routine only lowercases A to Z. + * @param str1 Null-terminated ASCII string to compare + * @param str2 Null-terminated ASCII string to compare + * @return The return value indicates the relation of <code>str1</code> to + * <code>str2</code> as follows + * Less than 0 means <code>str1</code> is less than <code>str2</code> + * Equal to 0 means <code>str1</code> is identical to <code>str2</code> + * Greater than 0 means <code>str1</code> is more than <code>str2</code> + */ + static int compareIStringASCII + ( + const XMLCh* const str1 + , const XMLCh* const str2 + ); + + /** Lexicographically compares, at most, the first count characters in * <code>str1</code> and <code>str2</code> and returns a value indicating the @@ -1492,6 +1513,13 @@ public: */ static void upperCase(XMLCh* const toUpperCase); + /** Converts a string to uppercase + * The routine only uppercases A to Z. + * @param toUpperCase The string which needs to be converted to uppercase. + * On return, this buffer also holds the converted uppercase string + */ + static void upperCaseASCII(XMLCh* const toUpperCase); + /** Converts a string to lowercase * @param toLowerCase The string which needs to be converted to lowercase. * On return, this buffer also holds the converted lowercase string diff --git a/src/xercesc/util/XMLURL.cpp b/src/xercesc/util/XMLURL.cpp index f7800ac94f89e235343cee04e578e97a75fdff1f..c7c98b01f66b9807dc2db9a236c42abbbc1ed247 100644 --- a/src/xercesc/util/XMLURL.cpp +++ b/src/xercesc/util/XMLURL.cpp @@ -137,7 +137,7 @@ XMLURL::Protocols XMLURL::lookupByName(const XMLCh* const protoName) { for (unsigned int index = 0; index < XMLURL::Protocols_Count; index++) { - if (!XMLString::compareIString(gProtoList[index].prefix, protoName)) + if (!XMLString::compareIStringASCII(protoName, gProtoList[index].prefix)) return gProtoList[index].protocol; } return XMLURL::Unknown; @@ -580,7 +580,7 @@ BinInputStream* XMLURL::makeNewStream() const // if (fProtocol == XMLURL::File) { - if (!fHost || !XMLString::compareIString(fHost, XMLUni::fgLocalHostString)) + if (!fHost || !XMLString::compareIStringASCII(fHost, XMLUni::fgLocalHostString)) { XMLCh* realPath = XMLString::replicate(fPath, fMemoryManager); diff --git a/src/xercesc/validators/DTD/DTDScanner.cpp b/src/xercesc/validators/DTD/DTDScanner.cpp index 395a5ef776928116d3499e0c74914a6adf477ed1..c064350f790b5be600af9526478047ea60986f26 100644 --- a/src/xercesc/validators/DTD/DTDScanner.cpp +++ b/src/xercesc/validators/DTD/DTDScanner.cpp @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.38 2005/03/20 19:02:45 cargilld + * Implement versions of uppercase and compareIstring that only check a to z, instead of all characters, and don't rely on functionality provided in the transcoders. + * * Revision 1.37 2005/01/07 15:28:49 amassari * Removed warnings * @@ -3724,7 +3727,11 @@ void DTDScanner::scanPI() namePtr = bbName.getRawBuffer(); // See if it issome form of 'xml' and emit a warning - if (!XMLString::compareIString(namePtr, XMLUni::fgXMLString)) + //if (!XMLString::compareIString(namePtr, XMLUni::fgXMLString)) + if (bbName.getLen() == 3 && + (((namePtr[0] == chLatin_x) || (namePtr[0] == chLatin_X)) && + ((namePtr[1] == chLatin_m) || (namePtr[1] == chLatin_M)) && + ((namePtr[2] == chLatin_l) || (namePtr[2] == chLatin_L)))) fScanner->emitError(XMLErrs::NoPIStartsWithXML); // If namespaces are enabled, then no colons allowed