⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlstring.hpp

📁 基于属性证书的访问控制源代码,由c++编写,包括openssl,xercesc等
💻 HPP
📖 第 1 页 / 共 5 页
字号:
      * @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 + -