cargilld 2004/12/13 18:09:21 Modified: c/src/xercesc/util XMLString.cpp XMLString.hpp Log: Performance update from Christian Will. Revision Changes Path 1.40 +1 -24 xml-xerces/c/src/xercesc/util/XMLString.cpp Index: XMLString.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLString.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- XMLString.cpp 6 Dec 2004 10:47:01 -0000 1.39 +++ XMLString.cpp 14 Dec 2004 02:09:20 -0000 1.40 @@ -1096,29 +1096,6 @@ return (*srcPtr == 0); } - -unsigned int XMLString::hash( const XMLCh* const tohash - , const unsigned int hashModulus - , MemoryManager* const) -{ - assert(hashModulus); - - unsigned int hashVal = 0; - if (tohash) { - const XMLCh* curCh = tohash; - while (*curCh) - { - unsigned int top = hashVal >> 24; - hashVal += (hashVal * 37) + top + (unsigned int)(*curCh); - curCh++; - } - } - - // Divide by modulus - return hashVal % hashModulus; -} - - const XMLCh* XMLString::findAny(const XMLCh* const toSearch , const XMLCh* const searchList) { 1.30 +27 -0 xml-xerces/c/src/xercesc/util/XMLString.hpp Index: XMLString.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLString.hpp,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- XMLString.hpp 6 Dec 2004 10:47:01 -0000 1.29 +++ XMLString.hpp 14 Dec 2004 02:09:20 -0000 1.30 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.30 2004/12/14 02:09:20 cargilld + * Performance update from Christian Will. + * * Revision 1.29 2004/12/06 10:47:01 amassari * Added XMLString::release(void**, MemoryManager*) [jira# 1301] * @@ -235,6 +238,7 @@ #include <xercesc/framework/XMLBuffer.hpp> #include <xercesc/framework/MemoryManager.hpp> #include <string.h> +#include <assert.h> XERCES_CPP_NAMESPACE_BEGIN @@ -1731,6 +1735,29 @@ inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch) { return XMLString::lastIndexOf(ch, toSearch, stringLen(toSearch)); +} + +inline unsigned int XMLString::hash( const XMLCh* const tohash + , const unsigned int hashModulus + , MemoryManager* const) +{ + assert(hashModulus); + + if (tohash == 0 || *tohash == 0) + return 0; + + const XMLCh* curCh = tohash; + unsigned int hashVal = (unsigned int)(*curCh); + curCh++; + + while (*curCh) + { + hashVal = (hashVal * 38) + (hashVal >> 24) + (unsigned int)(*curCh); + curCh++; + } + + // Divide by modulus + return hashVal % hashModulus; } XERCES_CPP_NAMESPACE_END
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]