gstring.h

来自「symbian 下的helix player源代码」· C头文件 代码 · 共 689 行 · 第 1/2 页

H
689
字号
	    {
		delete [] m_pszBuffer;
	    }

	    m_pszBuffer = rString.m_pszBuffer;
	    m_ulLength = rString.m_ulLength;
	    m_ulCapacity = rString.m_ulCapacity;
	    m_bRefMode = TRUE;
	}
	else
	{
	    m_lError = reserve(rString.m_ulLength + 1);
	    if (m_lError == ErrorNone)
	    {
		strcpy(m_pszBuffer, rString.m_pszBuffer); /* Flawfinder: ignore */
		m_ulLength = rString.m_ulLength;
	    }
	}

        return *this;
    };

    GString & operator = (const char *pszString)
    {
        if (pszString == NULL)
        {
            return *this;
        }
        m_lError = reserve(strlen(pszString) + 1);
        if (m_lError == ErrorNone)
        {
            strcpy(m_pszBuffer, pszString); /* Flawfinder: ignore */
            m_ulLength = strlen(pszString);
        }

        return *this;
    };

    GString & operator += (const GString &rString)
    {
        m_lError = reserve(m_ulLength + rString.m_ulLength + 1);
        if (m_lError == ErrorNone)
        {
            strncat(m_pszBuffer, rString.m_pszBuffer, rString.m_ulLength); /* Flawfinder: ignore */
            m_ulLength += rString.m_ulLength;
        }

        return *this;
    };

    GString & operator += (const char *pszString)
    {
        m_lError = reserve(m_ulLength + strlen(pszString) + 1);
        if (m_lError == ErrorNone)
        {
            strcat(m_pszBuffer, pszString); /* Flawfinder: ignore */
            m_ulLength += strlen(pszString);
        }

        return *this;
    };

    GString operator + (const GString &rString)
    {
        GString cTmp(*this);
        cTmp += rString;
        return cTmp;
    };

    GString operator + (const char *pszString)
    {
        GString cTmp(*this);
        cTmp += pszString;
        return cTmp;
    };

    BOOL operator == (const GString &rString)
    {
        return (((rString.m_ulLength != m_ulLength) ||
	         strncmp(m_pszBuffer, rString.m_pszBuffer, m_ulLength)) ? FALSE : TRUE);
    };

    BOOL operator == (const char *pszString)
    {
        return (((m_ulLength != strlen(pszString)) ||
	         strncmp(m_pszBuffer, pszString, m_ulLength)) ? FALSE : TRUE);
    };

    BOOL operator != (const GString &rString)
    {
        return (((m_ulLength != rString.m_ulLength) ||
	         strncmp(m_pszBuffer, rString.m_pszBuffer, m_ulLength)) ? TRUE : FALSE);
    };

    BOOL operator != (const char *pszString)
    {
        return (((m_ulLength != strlen(pszString)) ||
	         strncmp(m_pszBuffer, pszString, m_ulLength)) ? TRUE : FALSE);
    };

    const char & operator [] (LONG32 lPos) const
    {
        if (lPos < 0)
        {
            lPos = 0;
        }
        else if ((ULONG32) lPos > m_ulLength)
        {
            lPos = m_ulLength;
        }
        return m_pszBuffer[lPos];
    };

    LONG32 find(const char *pszString, LONG32 lPos = 0) const
    {
	char *pSubStr;

	if (m_bRefMode)
	{
	    pSubStr = StrNStr(&m_pszBuffer[lPos], pszString, m_ulLength - lPos, kMaximumCapacity);
	}
	else
	{
	    pSubStr = strstr(&m_pszBuffer[lPos], pszString);
	}

        LONG32 lRetVal;
        if (pSubStr)
        {
            lRetVal = pSubStr - m_pszBuffer;
        }
        else
        {
            lRetVal = -1;
        }

        return lRetVal;
    };

    LONG32 find(const GString &rString, LONG32 lPos = 0) const
    {
	char *pSubStr;

	if (m_bRefMode || rString.m_bRefMode)
	{
	    pSubStr = StrNStr(&m_pszBuffer[lPos], rString.m_pszBuffer, m_ulLength - lPos, rString.m_ulLength);
	}
	else
	{
	    pSubStr = strstr(&m_pszBuffer[lPos], rString.m_pszBuffer);
	}

        LONG32 lRetVal;
        if (pSubStr)
        {
            lRetVal = pSubStr - m_pszBuffer;
        }
        else
        {
            lRetVal = -1;
        }

        return lRetVal;
    };

    LONG32 find(char c, LONG32 lPos = 0) const
    {
        char *pSubStr;
	
	if (m_bRefMode)
	{
	    pSubStr = StrNChr(&m_pszBuffer[lPos], c, m_ulLength - lPos);
	}
	else
	{
	    pSubStr = strchr(&m_pszBuffer[lPos], c);
	}

        LONG32 lRetVal;
        if (pSubStr)
        {
            lRetVal = pSubStr - m_pszBuffer;
        }
        else
        {
            lRetVal = -1;
        }

        return lRetVal;
    };

    LONG32 find_last_of(char c) const
    {
	char* pSubStr;
	
	if (m_bRefMode)
	{
	    pSubStr = StrNRChr(m_pszBuffer, c, m_ulLength);
	}
	else
	{
	    pSubStr = strrchr(m_pszBuffer, c);
	}

	LONG32 lRet;
        if (pSubStr)
	{
	    lRet = pSubStr - m_pszBuffer;
	}
	else
	{
	    lRet = -1;
	}

        return lRet;
    };

    LONG32 find_first_of(const char *pszString, LONG32 lPos = 0) const
    {
	LONG32 lRet;

	if (m_bRefMode)
	{
	    lRet = StrNCSpn(&m_pszBuffer[lPos], pszString, m_ulLength - lPos, kMaximumCapacity);
	}
	else
	{
	    lRet = strcspn(&m_pszBuffer[lPos], pszString);
	}

        return lRet + lPos;
    };

    LONG32 find_first_of(const GString &rString, LONG32 lPos = 0) const
    {
	LONG32 lRet;

	if (m_bRefMode || rString.m_bRefMode)
	{
	    lRet = StrNCSpn(&m_pszBuffer[lPos], rString.m_pszBuffer, m_ulLength - lPos, rString.m_ulLength);
	}
	else
	{
	    lRet = strcspn(&m_pszBuffer[lPos], rString.m_pszBuffer);
	}

        return lRet + lPos;
    };

    LONG32 find_first_of(char c, LONG32 lPos = 0) const
    {
        return find(c, lPos);
    };

    LONG32 find_first_not_of(const char *pszString, LONG32 lPos = 0) const
    {
        LONG32 lRet;
	
	if (m_bRefMode)
	{
	    lRet = StrNSpn(&m_pszBuffer[lPos], pszString, m_ulLength - lPos, kMaximumCapacity);
	}
	else
	{
	    lRet = strspn(&m_pszBuffer[lPos], pszString);
	}

        return lRet + lPos;
    };

    LONG32 find_first_not_of(const GString &rString, LONG32 lPos = 0) const
    {
	LONG32 lRet;
	
	if (m_bRefMode || rString.m_bRefMode)
	{
	    lRet = StrNSpn(&m_pszBuffer[lPos], rString.m_pszBuffer, m_ulLength - lPos, rString.m_ulLength);
	}
	else
	{
	    lRet = strspn(&m_pszBuffer[lPos], rString.m_pszBuffer);
	}

        return lRet + lPos;
    };

    GString substr(LONG32 lPos, LONG32 rPos) const
    {
        if (lPos < 0) lPos = 0;
        if ((ULONG32) lPos >= m_ulLength) lPos = m_ulLength - 1;
        if (rPos < 0) rPos = 0;
        if ((ULONG32) rPos >= m_ulLength) rPos = m_ulLength - 1;
        if (rPos < lPos) rPos = lPos;

        GString retStr(&m_pszBuffer[lPos], rPos - lPos + 1, m_bRefMode);

        return retStr;
    };

    void CopyN(unsigned char *pBuffer, ULONG32 ulN)
    {
        m_lError = reserve(ulN + 1);
        if (m_lError == ErrorNone)
        {
            strncpy(m_pszBuffer, (const char *) pBuffer, ulN); /* Flawfinder: ignore */
            m_pszBuffer[ulN] = '\0';
            m_ulLength = strlen(m_pszBuffer);
        }
    };

    void LowerCase()
    {
        for (UINT32 i = 0; i < m_ulLength; i++)
        {
            char c = m_pszBuffer[i];

            // If character is uppercase ASCII, convert to lowercase
            if (c >= 65 && c <= 90)
            {
                c             += 32;
                m_pszBuffer[i] = c;
            }
        }
    };

    void UpperCase()
    {
        for (UINT32 i = 0; i < m_ulLength; i++)
        {
            char c = m_pszBuffer[i];

            // If character is lowercase ASCII, convert to uppercase
            if (c >= 97 && c <= 122)
            {
                c             -= 32;
                m_pszBuffer[i] = c;
            }
        }
    };
};

#endif  // _GSTRING_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?