Ignore:
Timestamp:
Jan 23, 2013, 7:29:34 PM (7 years ago)
Author:
sam
Message:

base: add safety asserts to the Array and String classes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lol/base/array.h

    r2261 r2266  
    1818#if !defined __LOL_BASE_ARRAY_H__
    1919#define __LOL_BASE_ARRAY_H__
     20
     21#include <lol/base/assert.h>
    2022
    2123#include <new>
     
    119121    inline Element& operator[](int n)
    120122    {
     123        /* Allow array[0] even if size is zero so that people can
     124         * always use &array[0] to get a pointer to the data. */
     125        ASSERT(n >= 0);
     126        ASSERT(n < m_count || (!n && !m_count));
    121127        return m_data[n];
    122128    }
     
    124130    inline Element const& operator[](int n) const
    125131    {
     132        ASSERT(n >= 0);
     133        ASSERT(n < m_count || (!n && !m_count));
    126134        return m_data[n];
    127135    }
     
    129137    inline Element& Last()
    130138    {
     139        ASSERT(m_count > 0);
    131140        return m_data[m_count - 1];
    132141    }
     
    134143    inline Element const& Last() const
    135144    {
     145        ASSERT(m_count > 0);
    136146        return m_data[m_count - 1];
    137147    }
     
    159169    inline void Pop()
    160170    {
     171        ASSERT(m_count > 0);
    161172        Remove(m_count - 1, 1);
    162173    }
     
    164175    void Remove(int pos, int todelete = 1)
    165176    {
     177        ASSERT(pos >= 0);
     178        ASSERT(pos + todelete <= m_count);
    166179        for (int i = pos; i + todelete < m_count; i++)
    167180            m_data[i] = m_data[i + todelete];
     
    173186    void Resize(int count, Element e = Element())
    174187    {
     188        ASSERT(count > 0);
    175189        Reserve(count);
    176190
Note: See TracChangeset for help on using the changeset viewer.