cargilld 2004/01/12 14:01:02 Modified: c/src/xercesc/util XMLUri.cpp XMLUri.hpp Log: Minor performance change for handling reserved and unreserved characters. Revision Changes Path 1.22 +16 -11 xml-xerces/c/src/xercesc/util/XMLUri.cpp Index: XMLUri.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLUri.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- XMLUri.cpp 12 Jan 2004 16:23:39 -0000 1.21 +++ XMLUri.cpp 12 Jan 2004 22:01:02 -0000 1.22 @@ -94,6 +94,16 @@ chAsterisk, chSingleQuote, chOpenParen, chCloseParen, chNull }; +// combination of MARK and RESERVED +const XMLCh XMLUri::MARK_OR_RESERVED_CHARACTERS[] = +{ + chDash, chUnderscore, chPeriod, chBang, chTilde, + chAsterisk, chSingleQuote, chOpenParen, chCloseParen, + chSemiColon, chForwardSlash, chQuestion, chColon, chAt, + chAmpersand, chEqual, chPlus, chDollarSign, chComma, chOpenSquare, + chCloseSquare, chNull +}; + // // scheme = alpha *( alpha | digit | "+" | "-" | "." ) // @@ -970,8 +980,7 @@ // I've interpreted as an error in the spec, since the // production should be equivalent to (uric - '/'), and uric // contains '[' and ']'. - else if (!isUnreservedCharacter(testChar) && - !isReservedCharacter(testChar)) + else if (!isReservedOrUnreservedCharacter(testChar)) { XMLCh value1[BUF_LEN+1]; value1[0] = testChar; @@ -1025,8 +1034,7 @@ , fMemoryManager); } } - else if (!isUnreservedCharacter(testChar) && - !isReservedCharacter(testChar)) + else if (!isReservedOrUnreservedCharacter(testChar)) { XMLCh value1[BUF_LEN+1]; value1[0] = testChar; @@ -1077,8 +1085,7 @@ , fMemoryManager); } } - else if (!isUnreservedCharacter(testChar) && - !isReservedCharacter(testChar)) + else if (!isReservedOrUnreservedCharacter(testChar)) { XMLCh value1[BUF_LEN+1]; value1[0] = testChar; @@ -1640,8 +1647,7 @@ const XMLCh* tmpStr = uricString; while (*tmpStr) { - if (isReservedCharacter(*tmpStr) || - isUnreservedCharacter(*tmpStr) ) + if (isReservedOrUnreservedCharacter(*tmpStr)) { tmpStr++; } @@ -2525,8 +2531,7 @@ !XMLString::isHex(pathStr[index+2])) return false; } - else if (!isUnreservedCharacter(testChar) && - !isReservedCharacter(testChar)) + else if (!isReservedOrUnreservedCharacter(testChar)) { return false; } 1.16 +18 -1 xml-xerces/c/src/xercesc/util/XMLUri.hpp Index: XMLUri.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLUri.hpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- XMLUri.hpp 17 Dec 2003 00:18:35 -0000 1.15 +++ XMLUri.hpp 12 Jan 2004 22:01:02 -0000 1.16 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.16 2004/01/12 22:01:02 cargilld + * Minor performance change for handling reserved and unreserved characters. + * * Revision 1.15 2003/12/17 00:18:35 cargilld * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data. * @@ -425,6 +428,7 @@ private: + static const XMLCh MARK_OR_RESERVED_CHARACTERS[]; static const XMLCh RESERVED_CHARACTERS[]; static const XMLCh MARK_CHARACTERS[]; static const XMLCh SCHEME_CHARACTERS[]; @@ -461,6 +465,13 @@ static bool isUnreservedCharacter(const XMLCh theChar); /** + * Determine whether a char is an reserved or unreserved character. + * + * @return true if the char is reserved or unreserved, false otherwise + */ + static bool isReservedOrUnreservedCharacter(const XMLCh theChar); + + /** * Determine whether a scheme conforms to the rules for a scheme name. * A scheme is conformant if it starts with an alphanumeric, and * contains only alphanumerics, '+','-' and '.'. @@ -739,6 +750,12 @@ // --------------------------------------------------------------------------- // XMLUri: Helper methods // --------------------------------------------------------------------------- +inline bool XMLUri::isReservedOrUnreservedCharacter(const XMLCh theChar) +{ + return (XMLString::isAlphaNum(theChar) || + XMLString::indexOf(MARK_OR_RESERVED_CHARACTERS, theChar) != -1); +} + inline bool XMLUri::isReservedCharacter(const XMLCh theChar) { return (XMLString::indexOf(RESERVED_CHARACTERS, theChar) != -1);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]