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__
23 #include <q3valuevector.h>
25 /* I wish QValueVector would check bounds upon extraction.. */
27 template <typename T
, const unsigned int size
>
28 class BoundsCheckingArray
31 BoundsCheckingArray() {}
32 BoundsCheckingArray( const BoundsCheckingArray
<T
, size
> &rhs
)
34 BoundsCheckingArray
&operator=( const BoundsCheckingArray
<T
, size
> &rhs
)
37 for (; i
< size
; ++i
)
38 m_data
[ i
] = rhs
.m_data
[ i
];
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
];