added debug bounds checking; added new empty() definition

[SVN r24127]
This commit is contained in:
Thorsten Jørgen Ottosen
2004-07-27 19:58:09 +00:00
parent cfb6d6eae6
commit bac6446111

View File

@ -27,6 +27,7 @@
#include <cstddef> #include <cstddef>
#include <stdexcept> #include <stdexcept>
#include <boost/assert.hpp>
// Handles broken standard libraries better than <iterator> // Handles broken standard libraries better than <iterator>
#include <boost/detail/iterator.hpp> #include <boost/detail/iterator.hpp>
@ -85,22 +86,50 @@ namespace boost {
} }
// operator[] // operator[]
reference operator[](size_type i) { return elems[i]; } reference operator[](size_type i)
const_reference operator[](size_type i) const { return elems[i]; } {
BOOST_ASSERT( i < N && "out of range" );
return elems[i];
}
const_reference operator[](size_type i) const
{
BOOST_ASSERT( i < N && "out of range" );
return elems[i];
}
// at() with range check // at() with range check
reference at(size_type i) { rangecheck(i); return elems[i]; } reference at(size_type i) { rangecheck(i); return elems[i]; }
const_reference at(size_type i) const { rangecheck(i); return elems[i]; } const_reference at(size_type i) const { rangecheck(i); return elems[i]; }
// front() and back() // front() and back()
reference front() { return elems[0]; } reference front()
const_reference front() const { return elems[0]; } {
reference back() { return elems[N-1]; } BOOST_ASSERT( N > 0 && "logic error" );
const_reference back() const { return elems[N-1]; } return elems[0];
}
const_reference front() const
{
BOOST_ASSERT( N > 0 && "logic error" );
return elems[0];
}
reference back()
{
BOOST_ASSERT( N > 0 && "logic error" );
return elems[N-1];
}
const_reference back() const
{
BOOST_ASSERT( N > 0 && "logic error" );
return elems[N-1];
}
// size is constant // size is constant
static size_type size() { return N; } static size_type size() { return N; }
static bool empty() { return false; } static bool empty() { return N == 0; }
static size_type max_size() { return N; } static size_type max_size() { return N; }
enum { static_size = N }; enum { static_size = N };