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/string.h

    r2260 r2266  
    1818#define __LOL_BASE_STRING_H__
    1919
     20#include <lol/base/assert.h>
    2021#include <lol/base/array.h>
    2122
     
    4243    {
    4344        using namespace std;
     45        ASSERT(str);
    4446        Resize((int)strlen(str));
    4547        memcpy(&(*this)[0], str, Count() + 1);
     
    5052    {
    5153        using namespace std;
     54        ASSERT(str);
    5255        Resize(count);
    5356        memcpy(&(*this)[0], str, count);
    54         (*this)[count] = '\0';
     57        ((Super &)*this)[count] = '\0';
    5558    }
    5659
     
    6265    inline char &operator [](int n)
    6366    {
     67        ASSERT(n >= 0);
     68        ASSERT(n < Count() || (!n && !Count()));
    6469        return ((Super &)*this)[n];
    6570    }
     
    6772    inline char const &operator [](int n) const
    6873    {
     74        ASSERT(n >= 0);
     75        ASSERT(n < Count() || (!n && !Count()));
    6976        return ((Super const &)*this)[n];
    7077    }
     
    7279    inline char &Last()
    7380    {
     81        ASSERT(Count() > 0);
    7482        return (*this)[Count() - 1];
    7583    }
     
    7785    inline char const &Last() const
    7886    {
     87        ASSERT(Count() > 0);
    7988        return (*this)[Count() - 1];
    8089    }
     
    8796    void Resize(int count)
    8897    {
     98        ASSERT(count >= 0, "count = %d", count);
    8999        ((Super &)*this).Resize(count + 1);
    90100        ((Super &)*this).Last() = '\0';
Note: See TracChangeset for help on using the changeset viewer.