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

📄 xbytebuffer.cpp

📁 BCB的学习资料
💻 CPP
📖 第 1 页 / 共 4 页
字号:
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aWordArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++= *(src+1);
            *dest++ = *src++;
            src++;
        }
        m_Length += ArrayLength * 2;
    }
    return *this;
}

XByteBuffer & XByteBuffer::AppendIntArray(const XArray<XInt> &aIntArray)
{
    int ArrayLength = aIntArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 4 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aIntArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 3;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 4;
        }
        m_Length += ArrayLength * 4;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendDWordArray(const XArray<XDWord> &aDWordArray)
{
    int ArrayLength = aDWordArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 4 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aDWordArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 3;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 4;
        }
        m_Length += ArrayLength * 4;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendLongArray(const XArray<XLong> &aLongArray)
{
    int ArrayLength = aLongArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 8 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aLongArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 7;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 8;
        }
        m_Length += ArrayLength * 8;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendDDWordArray(const XArray<XDDWord> &aDDWordArray)
{
    int ArrayLength = aDDWordArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 8 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aDDWordArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 7;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 8;
        }
        m_Length += ArrayLength * 8;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendFloatArray(const XArray<XFloat> &aFloatArray)
{
    int ArrayLength = aFloatArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * sizeof(XFloat) );
        XFloat * dest = (XFloat *)(m_Data + m_Length);
        const XFloat * src = aFloatArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++ = *src++;
        }
        m_Length += ArrayLength * sizeof(XFloat);
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendDoubleArray(const XArray<XDouble> &aDoubleArray)
{
    int ArrayLength = aDoubleArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * sizeof(XDouble) );
        XDouble * dest = (XDouble *)(m_Data + m_Length);
        const XDouble * src = aDoubleArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++ = *src++;
        }
        m_Length += ArrayLength * sizeof(XDouble);
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendLongDoubleArray(const XArray<XLongDouble> &aLongDoubleArray)
{
    int ArrayLength = aLongDoubleArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * sizeof(XLongDouble) );
        XLongDouble * dest = (XLongDouble *)(m_Data + m_Length);
        const XLongDouble * src = aLongDoubleArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++ = *src++;
        }
        m_Length += ArrayLength *  sizeof(XLongDouble);
    }
    return *this;
}


 XByteBuffer & XByteBuffer::AppendByteArray(const XDynamicArray<XByte> &aByteArray)
{
    int ArrayLength = aByteArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength );
        XByte * dest = m_Data + m_Length;
        const XByte * src = aByteArray.Data();
        for(int i=0; i<ArrayLength; i++) *dest++ = *src++;
        m_Length += ArrayLength;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendCharArray(const XDynamicArray<XChar> &aCharArray)
{
    int ArrayLength = aCharArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aCharArray.Data();

        for(int i=0; i<ArrayLength; i++) *dest++ = *src++;

        m_Length += ArrayLength;
    }
    return *this;

}
XByteBuffer & XByteBuffer::AppendBoolArray(const XDynamicArray<XBoolean> &aBoolArray)
{
    int ArrayLength = aBoolArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength );
        XByte * dest = m_Data + m_Length;
        const XBoolean * src = aBoolArray.Data();

        for(int i=0; i<ArrayLength; i++)
        {
            if( *src ) *dest++ = 1;
            else *dest++ = 0;
            src++;
        }
        m_Length += ArrayLength;
    }
    return *this;
}

XByteBuffer & XByteBuffer::AppendShortArray(const XDynamicArray<XShort> &aShortArray)
{
    int ArrayLength = aShortArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 2 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aShortArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++= *(src+1);
            *dest++ = *src++;
            src++;
        }
        m_Length += ArrayLength * 2;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendWordArray(const XDynamicArray<XWord> &aWordArray)
{
    int ArrayLength = aWordArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 2 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aWordArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++= *(src+1);
            *dest++ = *src++;
            src++;
        }
        m_Length += ArrayLength * 2;
    }
    return *this;
}

XByteBuffer & XByteBuffer::AppendIntArray(const XDynamicArray<XInt> &aIntArray)
{
    int ArrayLength = aIntArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 4 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aIntArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 3;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 4;
        }
        m_Length += ArrayLength * 4;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendDWordArray(const XDynamicArray<XDWord> &aDWordArray)
{
    int ArrayLength = aDWordArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 4 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aDWordArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 3;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 4;
        }
        m_Length += ArrayLength * 4;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendLongArray(const XDynamicArray<XLong> &aLongArray)
{
    int ArrayLength = aLongArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 8 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aLongArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 7;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 8;
        }
        m_Length += ArrayLength * 8;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendDDWordArray(const XDynamicArray<XDDWord> &aDDWordArray)
{
    int ArrayLength = aDDWordArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * 8 );
        XByte * dest = m_Data + m_Length;
        const XByte * src = (const XByte *)aDDWordArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            src += 7;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src--;
            *dest++ = *src;
            src += 8;
        }
        m_Length += ArrayLength * 8;
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendFloatArray(const XDynamicArray<XFloat> &aFloatArray)
{
    int ArrayLength = aFloatArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * sizeof(XFloat) );
        XFloat * dest = (XFloat *)(m_Data + m_Length);
        const XFloat * src = aFloatArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++ = *src++;
        }
        m_Length += ArrayLength * sizeof(XFloat);
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendDoubleArray(const XDynamicArray<XDouble> &aDoubleArray)
{
    int ArrayLength = aDoubleArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * sizeof(XDouble) );
        XDouble * dest = (XDouble *)(m_Data + m_Length);
        const XDouble * src = aDoubleArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++ = *src++;
        }
        m_Length += ArrayLength * sizeof(XDouble);
    }
    return *this;
}
XByteBuffer & XByteBuffer::AppendLongDoubleArray(const XDynamicArray<XLongDouble> &aLongDoubleArray)
{
    int ArrayLength = aLongDoubleArray.GetLength();
    if( ArrayLength > 0 )
    {
        ensureCapacity( m_Length + ArrayLength * sizeof(XLongDouble) );
        XLongDouble * dest = (XLongDouble *)(m_Data + m_Length);
        const XLongDouble * src = aLongDoubleArray.Data();
        for(int i=0; i<ArrayLength; i++)
        {
            *dest++ = *src++;
        }
        m_Length += ArrayLength *  sizeof(XLongDouble);
    }
    return *this;
}
/*
////////////////////////////////////////////////////////////////////////////////
[Name]AppendString
[Title]向缓冲区中追加一个字符串的数据
////////////////////////////////////////////////////////////////////////////////
[Param]
    <const char *>aString 被追加的字符串
[Return]
    <XByteBuffer &>当前缓冲区对象的引用

⌨️ 快捷键说明

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