Fix crash on logout
[kdenetwork.git] / ksirc / boundscheckingarray.h
blob0941eca7f295120d79e730576bfe2f2e9bbc6c87
1 /* This file is part of the KDE project
2 Copyright (C) 2001 Simon Hausmann <hausmann@kde.org>
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
19 #ifndef __boundscheckingarray__
20 #define __boundscheckingarray__
22 #include <assert.h>
23 #include <q3valuevector.h>
25 /* I wish QValueVector would check bounds upon extraction.. */
27 template <typename T, const unsigned int size>
28 class BoundsCheckingArray
30 public:
31 BoundsCheckingArray() {}
32 BoundsCheckingArray( const BoundsCheckingArray<T, size> &rhs )
33 { (*this) = rhs; }
34 BoundsCheckingArray &operator=( const BoundsCheckingArray<T, size> &rhs )
36 unsigned int i = 0;
37 for (; i < size; ++i )
38 m_data[ i ] = rhs.m_data[ i ];
39 return *this;
42 T &operator[]( unsigned int index )
44 assert( index < size );
45 return m_data[ index ];
48 const T &operator[]( unsigned int index ) const
50 assert( index < size );
51 return m_data[ index ];
54 QVector<T> toValueVector() const
56 QVector<T> vector( size );
57 for ( unsigned int i = 0; i < size; ++i )
58 vector[ i ] = m_data[ i ];
59 return vector;
62 private:
63 T m_data[ size ];
66 #endif