1
0
Fork 0
flightgear/src/FDM/YASim/Vector.hpp
andy 6ed0ece57c While I had the valgrind rig set up, I took the opportunity to plug a
bunch of memory leaks that had accumulated over the years.  FlightGear
doesn't currently bother to destroy and recreate a YASim context, but
at least it can do so now without worry.
2006-03-10 22:21:42 +00:00

71 lines
1.1 KiB
C++

#ifndef _VECTOR_HPP
#define _VECTOR_HPP
//
// Excruciatingly simple vector-of-pointers class. Easy & useful.
// No support for addition of elements anywhere but at the end of the
// list, nor for removal of elements. Does not delete (or interpret
// in any way) its contents.
//
class Vector {
public:
Vector();
~Vector();
int add(void* p);
void* get(int i);
void set(int i, void* p);
int size();
private:
void realloc();
int _nelem;
int _sz;
void** _array;
};
inline Vector::Vector()
{
_nelem = 0;
_sz = 0;
_array = 0;
}
inline Vector::~Vector()
{
delete[] _array;
}
inline int Vector::add(void* p)
{
if(_nelem == _sz)
realloc();
_array[_sz] = p;
return _sz++;
}
inline void* Vector::get(int i)
{
return _array[i];
}
inline void Vector::set(int i, void* p)
{
_array[i] = p;
}
inline int Vector::size()
{
return _sz;
}
inline void Vector::realloc()
{
_nelem = 2*_nelem + 1;
void** array = new void*[_nelem];
for(int i=0; i<_sz; i++)
array[i] = _array[i];
delete[] _array;
_array = array;
}
#endif // _VECTOR_HPP