From 2e5b874fe4d7ce90f65d2a42aef0da1789390cc8 Mon Sep 17 00:00:00 2001 From: Alberto Massari <amassari@apache.org> Date: Thu, 8 Dec 2005 15:00:44 +0000 Subject: [PATCH] Use XMLString::compareIStringASCII to avoid the penalty of calling XMLString::lowerCase git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@355106 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/dom/impl/DOMConfigurationImpl.cpp | 89 ++++++------------- 1 file changed, 28 insertions(+), 61 deletions(-) diff --git a/src/xercesc/dom/impl/DOMConfigurationImpl.cpp b/src/xercesc/dom/impl/DOMConfigurationImpl.cpp index ccd3a0039..5d2f27372 100644 --- a/src/xercesc/dom/impl/DOMConfigurationImpl.cpp +++ b/src/xercesc/dom/impl/DOMConfigurationImpl.cpp @@ -20,7 +20,6 @@ #include <xercesc/util/XMLString.hpp> #include <xercesc/util/XMLUniDefs.hpp> #include <xercesc/dom/DOMException.hpp> -#include <xercesc/util/Janitor.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -55,21 +54,15 @@ DOMConfigurationImpl::~DOMConfigurationImpl() { } void DOMConfigurationImpl::setParameter(const XMLCh* name, const void* value) { - - XMLCh* lowerCaseName = XMLString::replicate(name, fMemoryManager); - ArrayJanitor<XMLCh> janName(lowerCaseName, fMemoryManager); - - XMLString::lowerCaseASCII(lowerCaseName); - - if(!canSetParameter(lowerCaseName, value)) { + if(!canSetParameter(name, value)) { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); } - if(XMLString::equals(lowerCaseName, XMLUni::fgDOMErrorHandler)) { + if(XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler)==0) { fErrorHandler = (DOMErrorHandler*)value; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSchemaType)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType)==0) { fSchemaType = (XMLCh*)value; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSchemaLocation)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation)==0) { fSchemaLocation = (XMLCh*)value; } else { // canSetParameter above should take care of this case throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); @@ -78,16 +71,11 @@ void DOMConfigurationImpl::setParameter(const XMLCh* name, const void* value) { } void DOMConfigurationImpl::setParameter(const XMLCh* name, bool value) { - XMLCh* lowerCaseName = XMLString::replicate(name, fMemoryManager); - ArrayJanitor<XMLCh> janName(lowerCaseName, fMemoryManager); - - XMLString::lowerCaseASCII(lowerCaseName); - - if(!canSetParameter(lowerCaseName, value)) { + if(!canSetParameter(name, value)) { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); } - DOMConfigurationFeature whichFlag = getFeatureFlag(lowerCaseName); + DOMConfigurationFeature whichFlag = getFeatureFlag(name); if(value) { featureValues |= whichFlag; } else { @@ -101,15 +89,9 @@ void DOMConfigurationImpl::setParameter(const XMLCh* name, bool value) { // -------------------------------------- const void* DOMConfigurationImpl::getParameter(const XMLCh* name) const { - - XMLCh* lowerCaseName = XMLString::replicate(name, fMemoryManager); - ArrayJanitor<XMLCh> janName(lowerCaseName, fMemoryManager); - - XMLString::lowerCaseASCII(lowerCaseName); - DOMConfigurationFeature whichFlag; try { - whichFlag = getFeatureFlag(lowerCaseName); + whichFlag = getFeatureFlag(name); if(featureValues & whichFlag) { return (void*)true; } else { @@ -117,11 +99,11 @@ const void* DOMConfigurationImpl::getParameter(const XMLCh* name) const { } } catch (DOMException&) { // must not be a boolean parameter - if(XMLString::equals(lowerCaseName, XMLUni::fgDOMErrorHandler)) { + if(XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler)==0) { return fErrorHandler; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSchemaType)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType)==0) { return fSchemaType; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSchemaLocation)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation)==0) { return fSchemaLocation; } else { throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); @@ -144,16 +126,11 @@ bool DOMConfigurationImpl::canSetParameter(const XMLCh* name, const void* /*valu * 2) if an [optional] feature has no supporting code, then return false **/ - XMLCh* lowerCaseName = XMLString::replicate(name, fMemoryManager); - ArrayJanitor<XMLCh> janName(lowerCaseName, fMemoryManager); - - XMLString::lowerCaseASCII(lowerCaseName); - - if(XMLString::equals(lowerCaseName, XMLUni::fgDOMErrorHandler)) { + if(XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler)==0) { return true; // required // - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSchemaType)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType)==0) { return false; // optional // - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSchemaLocation)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation)==0) { return false; // optional // } return false; @@ -168,12 +145,7 @@ bool DOMConfigurationImpl::canSetParameter(const XMLCh* name, bool booleanValue) * 2) if an [optional] feature has no supporting code, then return false **/ - XMLCh* lowerCaseName = XMLString::replicate(name, fMemoryManager); - ArrayJanitor<XMLCh> janName(lowerCaseName, fMemoryManager); - - XMLString::lowerCaseASCII(lowerCaseName); - - DOMConfigurationFeature whichFlag = getFeatureFlag(lowerCaseName); + DOMConfigurationFeature whichFlag = getFeatureFlag(name); switch (whichFlag) { case FEATURE_CANONICAL_FORM: if(booleanValue) return false; // optional // @@ -231,38 +203,33 @@ const DOMStringList* DOMConfigurationImpl::getParameterNames() const // ------------------------------------------- DOMConfigurationImpl::DOMConfigurationFeature DOMConfigurationImpl::getFeatureFlag(const XMLCh* name) const { - XMLCh* lowerCaseName = XMLString::replicate(name, fMemoryManager); - ArrayJanitor<XMLCh> janName(lowerCaseName, fMemoryManager); - - XMLString::lowerCaseASCII(lowerCaseName); - - if(XMLString::equals(lowerCaseName, XMLUni::fgDOMCanonicalForm)) { + if(XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm)==0) { return FEATURE_CANONICAL_FORM; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMCDATASections )) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections )==0) { return FEATURE_CDATA_SECTIONS; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMComments)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments)==0) { return FEATURE_COMMENTS; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMDatatypeNormalization)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization)==0) { return FEATURE_DATATYPE_NORMALIZATION; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMWRTDiscardDefaultContent)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMWRTDiscardDefaultContent)==0) { return FEATURE_DISCARD_DEFAULT_CONTENT; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMEntities)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities)==0) { return FEATURE_ENTITIES; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMInfoset)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset)==0) { return FEATURE_INFOSET; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMNamespaces)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces)==0) { return FEATURE_NAMESPACES; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMNamespaceDeclarations)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations)==0) { return FEATURE_NAMESPACE_DECLARATIONS; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMNormalizeCharacters)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNormalizeCharacters)==0) { return FEATURE_NORMALIZE_CHARACTERS; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMSplitCDATASections)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSplitCDATASections)==0) { return FEATURE_SPLIT_CDATA_SECTIONS; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMValidate)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidate)==0) { return FEATURE_VALIDATE; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMValidateIfSchema)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema)==0) { return FEATURE_VALIDATE_IF_SCHEMA; - } else if (XMLString::equals(lowerCaseName, XMLUni::fgDOMElementContentWhitespace)) { + } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMElementContentWhitespace)==0) { return FEATURE_ELEMENT_CONTENT_WHITESPACE; } else { throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); -- GitLab