소스 검색

base: improve assert messages in the array class.

undefined
Sam Hocevar 10 년 전
부모
커밋
f075894e8e
1개의 변경된 파일32개의 추가작업 그리고 19개의 파일을 삭제
  1. +32
    -19
      src/lol/base/array.h

+ 32
- 19
src/lol/base/array.h 파일 보기

@@ -1,7 +1,7 @@
//
// Lol Engine
//
// Copyright: (c) 2010-2014 Sam Hocevar <sam@hocevar.net>
// Copyright: (c) 2010-2015 Sam Hocevar <sam@hocevar.net>
// (c) 2013-2014 Benjamin "Touky" Huet <huet.benjamin@gmail.com>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
@@ -133,15 +133,17 @@ public:
{
/* Allow array[0] even if size is zero so that people can
* always use &array[0] to get a pointer to the data. */
ASSERT(n >= 0);
ASSERT(n < m_count || (!n && !m_count));
ASSERT(n >= 0 && (n < m_count || (!n && !m_count)),
"cannot access index %lld in array of size %lld",
(long long int)n, (long long int)m_count);
return m_data[n];
}

inline element_t const& operator[](ptrdiff_t n) const
{
ASSERT(n >= 0);
ASSERT(n < m_count || (!n && !m_count));
ASSERT(n >= 0 && (n < m_count || (!n && !m_count)),
"cannot access index %lld in array of size %lld",
(long long int)n, (long long int)m_count);
return m_data[n];
}

@@ -205,8 +207,9 @@ public:

inline void Insert(T const &x, ptrdiff_t pos)
{
ASSERT(pos >= 0);
ASSERT(pos <= m_count);
ASSERT(pos >= 0 && pos <= m_count,
"cannot insert at index %lld in array of size %lld",
(long long int)pos, (long long int)m_count);

if (m_count >= m_reserved)
Grow();
@@ -222,8 +225,9 @@ public:

inline bool InsertUnique(T const &x, ptrdiff_t pos)
{
ASSERT(pos >= 0);
ASSERT(pos <= m_count);
ASSERT(pos >= 0 && pos <= m_count,
"cannot insert at index %lld in array of size %lld",
(long long int)pos, (long long int)m_count);

if (Find(x) != INDEX_NONE)
return false;
@@ -284,10 +288,12 @@ public:

void Swap(ptrdiff_t pos1, ptrdiff_t pos2)
{
ASSERT(pos1 >= 0);
ASSERT(pos2 >= 0);
ASSERT(pos1 < m_count);
ASSERT(pos2 < m_count);
ASSERT(pos1 >= 0 && pos1 <= m_count,
"cannot swap index %lld in array of size %lld",
(long long int)pos1, (long long int)m_count);
ASSERT(pos2 >= 0 && pos2 <= m_count,
"cannot swap index %lld in array of size %lld",
(long long int)pos2, (long long int)m_count);

if (pos1 != pos2)
std::swap((*this)[pos1], (*this)[pos2]);
@@ -296,8 +302,11 @@ public:
void Remove(ptrdiff_t pos, ptrdiff_t todelete = 1)
{
ASSERT(todelete >= 0);
ASSERT(pos - todelete >= -m_count - 1);
ASSERT(pos + todelete <= m_count);
ASSERT(pos - todelete >= -m_count - 1 && pos + todelete <= m_count,
"cannot remove %lld elements at %lld in array of size %lld",
(long long int)todelete, (long long int)pos,
(long long int)m_count);

if (pos < 0)
pos = m_count + pos;

@@ -311,8 +320,11 @@ public:
void RemoveSwap(ptrdiff_t pos, ptrdiff_t todelete = 1)
{
ASSERT(todelete >= 0);
ASSERT(pos - todelete >= -m_count - 1);
ASSERT(pos + todelete <= m_count);
ASSERT(pos - todelete >= -m_count - 1 && pos + todelete <= m_count,
"cannot remove %lld elements at %lld in array of size %lld",
(long long int)todelete, (long long int)pos,
(long long int)m_count);

if (pos < 0)
pos = m_count + pos;

@@ -485,8 +497,9 @@ public:

inline void Insert(ptrdiff_t pos, T... args)
{
ASSERT(pos >= 0);
ASSERT(pos <= this->m_count);
ASSERT(pos >= 0 && pos <= this->m_count,
"cannot insert at index %lld in array of size %lld",
(long long int)pos, (long long int)this->m_count);

if (this->m_count >= this->m_reserved)
this->Grow();


불러오는 중...
취소
저장