networking

This commit is contained in:
2025-07-13 15:47:42 +03:00
parent f5b26be510
commit a9c28b8940
345 changed files with 142130 additions and 174 deletions

View File

@@ -27,8 +27,11 @@ public:
void AppendAt( size_t nIndex, const T *data, size_t n );
void RemoveHead();
void RemoveHead( size_t n );
void RemoveTail();
void RemoveTail( size_t n );
void RemoveAt( size_t nIndex );
void RemoveAt( size_t nIndex, size_t n );
T *GetData( void );
size_t GetSize( void );
@@ -121,10 +124,17 @@ void CUtlVector<T>::AppendHead( const T &data )
template<typename T>
void CUtlVector<T>::AppendHead( const T *pData, size_t n )
{
size_t prevSize = m_data.GetSize();
m_data.Resize(prevSize+n, n);
for ( size_t i = 0; i < n; i++ )
size_t nOldSize = m_nSize;
m_data.Resize(m_nSize+n);
for (size_t i = nOldSize; i > 0; --i)
{
new (&m_data[i + n - 1]) T(m_data[i - 1]);
m_data[i - 1].~T();
}
for (size_t i = 0; i < n; ++i)
{
new (&m_data[i]) T(pData[i]);
}
m_nSize+=n;
}
@@ -152,23 +162,71 @@ void CUtlVector<T>::AppendAt( size_t nIndex, const T &data )
template<typename T>
void CUtlVector<T>::AppendAt( size_t nIndex, const T *pData, size_t n )
{
size_t nOldSize = m_nSize;
m_data.Resize(m_nSize+n);
for (size_t i = nOldSize; i > nIndex; --i)
{
new (&m_data[i + n - 1]) T(m_data[i - 1]);
m_data[i - 1].~T();
}
for (size_t i = 0; i < n; ++i)
{
new (&m_data[nIndex + i]) T(pData[i]);
}
m_nSize+=n;
}
template<typename T>
void CUtlVector<T>::RemoveHead()
{
m_nSize--;
RemoveHead( 1 );
}
template<typename T>
void CUtlVector<T>::RemoveHead( size_t n )
{
RemoveAt(0, n);
}
template<typename T>
void CUtlVector<T>::RemoveTail()
{
m_nSize--;
RemoveTail( 1 );
}
template<typename T>
void CUtlVector<T>::RemoveTail( size_t n )
{
if (n > m_nSize)
n = m_nSize;
m_data.Resize(m_nSize-n);
m_nSize -= n;
}
template<typename T>
void CUtlVector<T>::RemoveAt( size_t nIndex )
{
m_nSize--;
RemoveAt( nIndex, 1 );
}
template<typename T>
void CUtlVector<T>::RemoveAt( size_t nIndex, size_t n )
{
if ( nIndex >= m_nSize )
{
return;
}
if ( nIndex + n > m_nSize )
{
n = m_nSize - nIndex;
}
for ( size_t i = nIndex; i < nIndex + n; i++ )
{
m_data[i].~T();
}
size_t nElementsToMove = m_nSize - (nIndex + n);
for ( size_t i = 0; i < nElementsToMove; i++ )
{
new (&m_data[nIndex + i]) T(m_data[nIndex + n + i]);
m_data[nIndex + n + i].~T();
}
m_nSize -= n;
}
template<typename T>