📄 xmlstring.hpp
字号:
* @param toTranscode The string tobe transcoded * @param toFill The buffer that is filled with the transcoded value. * The size of this buffer should atleast be 'maxChars + 1'. * @param maxChars The maximum number of characters that the output * buffer can hold (not including the null, which is why * toFill should be at least maxChars+1.). * @return Returns true if successful, false if there was an error */ static bool transcode ( const char* const toTranscode , XMLCh* const toFill , const unsigned int maxChars , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Trims off extra space characters from the start and end of the string, * moving the non-space string content back to the start. * @param toTrim The string to be trimmed. On return this contains the * trimmed string */ static void trim(char* const toTrim); /** Trims off extra space characters from the start and end of the string, * moving the non-space string content back to the start. * @param toTrim The string to be trimmed. On return this contains * the trimmed string */ static void trim(XMLCh* const toTrim); /** Break a string into tokens with space as delimiter, and * stored in a string vector. The caller owns the string vector * that is returned, and is responsible for deleting it. * @param tokenizeSrc String to be tokenized * @return a vector of all the tokenized string */ static BaseRefVectorOf<XMLCh>* tokenizeString(const XMLCh* const tokenizeSrc , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** @name Formatting functions */ //@{ /** Creates a UName from a URI and base name. It is in the form * {url}name, and is commonly used internally to represent fully * qualified names when namespaces are enabled. * * @param pszURI The URI part of the name * @param pszName The base part of the name * @return Returns the complete formatted UName */ static XMLCh* makeUName ( const XMLCh* const pszURI , const XMLCh* const pszName ); /** * Internal function to perform token replacement for strings. * * @param errText The text (NULL terminated) where the replacement * is to be done. The size of this buffer should be * 'maxChars + 1' to account for the final NULL. * @param maxChars The size of the output buffer, i.e. the maximum * number of characters that it will hold. If the result is * larger, it will be truncated. * @param text1 Replacement text-one * @param text2 Replacement text-two * @param text3 Replacement text-three * @param text4 Replacement text-four * @return Returns the count of characters that are outputted */ static unsigned int replaceTokens ( XMLCh* const errText , const unsigned int maxChars , const XMLCh* const text1 , const XMLCh* const text2 , const XMLCh* const text3 , const XMLCh* const text4 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts a string to uppercase * @param toUpperCase The string which needs to be converted to uppercase. * On return, this buffer also holds the converted uppercase string */ static void upperCase(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 */ static void lowerCase(XMLCh* const toLowerCase); /** Check if string is WhiteSpace:replace * @param toCheck The string which needs to be checked. */ static bool isWSReplaced(const XMLCh* const toCheck); /** Check if string is WhiteSpace:collapse * @param toCheck The string which needs to be checked. */ static bool isWSCollapsed(const XMLCh* const toCheck); /** Replace whitespace * @param toConvert The string which needs to be whitespace replaced. * On return , this buffer also holds the converted string */ static void replaceWS(XMLCh* const toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Collapse whitespace * @param toConvert The string which needs to be whitespace collapsed. * On return , this buffer also holds the converted string */ static void collapseWS(XMLCh* const toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Remove whitespace * @param toConvert The string which needs to be whitespace removed. * On return , this buffer also holds the converted string */ static void removeWS(XMLCh* const toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Fixes a platform dependent absolute path filename to standard URI form. * 1. Windows: fix 'x:' to 'file:///x:' and convert any backslash to forward slash * 2. UNIX: fix '/blah/blahblah' to 'file:///blah/blahblah' * @param str The string that has the absolute path filename * @param target The target string pre-allocated to store the fixed uri */ static void fixURI(const XMLCh* const str, XMLCh* const target); //@} /** @name String Memory Management functions */ //@{ /** * Release the parameter char string that was allocated by the implementation (i.e.the parser). * The implementation will call operator delete[] and then turn the string to a null pointer. * * @param buf The string to be deleted and become a null pointer. */ static void release(char** buf); /** * Release the parameter XMLCh string that was allocated by the implementation (i.e.the parser). * The implementation will call operator delete[] and then turn the string to a null pointer. * * @param buf The string to be deleted and become a null pointer. */ static void release(XMLCh** buf); /** * Release the parameter XMLByte string that was allocated by the implementation (i.e.the parser). * The implementation will call operator delete[] and then turn the string to a null pointer. * * @param buf The string to be deleted and become a null pointer. */ static void release(XMLByte** buf); //@}private : /** @name Constructors and Destructor */ //@{ /** Unimplemented default constructor */ XMLString(); /** Unimplemented destructor */ ~XMLString(); //@} /** @name Initialization */ //@{ /** Init/Term methods called from XMLPlatformUtils class */ static void initString(XMLLCPTranscoder* const defToUse, MemoryManager* const manager); static void termString(); //@} /** * Called by regionMatches/regionIMatches to validate that we * have a valid input */ static bool validateRegion(const XMLCh* const str1, const int offset1, const XMLCh* const str2, const int offset2, const unsigned int charCount); static MemoryManager* fgMemoryManager; friend class XMLPlatformUtils;};// ---------------------------------------------------------------------------// Inline some methods that are either just passthroughs to other string// methods, or which are key for performance.// ---------------------------------------------------------------------------inline void XMLString::moveChars( XMLCh* const targetStr , const XMLCh* const srcStr , const unsigned int count){ memcpy(targetStr, srcStr, count * sizeof(XMLCh));}inline unsigned int XMLString::stringLen(const XMLCh* const src){ if (src == 0 || *src == 0) { return 0; } else { const XMLCh* pszTmp = src + 1; while (*pszTmp) ++pszTmp; return (unsigned int)(pszTmp - src); }}inline XMLCh* XMLString::replicate(const XMLCh* const toRep, MemoryManager* const manager){ // If a null string, return a null string! XMLCh* ret = 0; if (toRep) { const unsigned int len = stringLen(toRep); ret = (XMLCh*) manager->allocate((len+1) * sizeof(XMLCh)); //new XMLCh[len + 1]; memcpy(ret, toRep, (len + 1) * sizeof(XMLCh)); } return ret;}inline bool XMLString::startsWith( const XMLCh* const toTest , const XMLCh* const prefix){ return (compareNString(toTest, prefix, stringLen(prefix)) == 0);}inline bool XMLString::startsWithI( const XMLCh* const toTest , const XMLCh* const prefix){ return (compareNIString(toTest, prefix, stringLen(prefix)) == 0);}inline bool XMLString::endsWith(const XMLCh* const toTest, const XMLCh* const suffix){ unsigned int suffixLen = XMLString::stringLen(suffix); return regionMatches(toTest, XMLString::stringLen(toTest) - suffixLen, suffix, 0, suffixLen);}inline bool XMLString::validateRegion(const XMLCh* const str1, const int offset1, const XMLCh* const str2, const int offset2, const unsigned int charCount){ if (offset1 < 0 || offset2 < 0 || (offset1 + charCount) > XMLString::stringLen(str1) || (offset2 + charCount) > XMLString::stringLen(str2) ) return false; return true;}inline bool XMLString::equals( const XMLCh* const str1 , const XMLCh* const str2){ const XMLCh* psz1 = str1; const XMLCh* psz2 = str2; if (psz1 == 0 || psz2 == 0) { if ((psz1 != 0 && *psz1) || (psz2 != 0 && *psz2)) return false; else return true; } while (*psz1 == *psz2) { // If either has ended, then they both ended, so equal if (!*psz1) return true; // Move upwards for the next round psz1++; psz2++; } return false;}inline bool XMLString::equals( const char* const str1 , const char* const str2){ const char* psz1 = str1; const char* psz2 = str2; if (psz1 == 0 || psz2 == 0) { if ((psz1 != 0 && *psz1) || (psz2 != 0 && *psz2)) return false; else return true; } while (*psz1 == *psz2) { // If either has ended, then they both ended, so equal if (!*psz1) return true; // Move upwards for the next round psz1++; psz2++; } return false;}inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch){ return XMLString::lastIndexOf(ch, toSearch, stringLen(toSearch));}XERCES_CPP_NAMESPACE_END#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -