42 #include <ode/odeconfig.h>
53 void _freeAll (
int sizeofT);
54 void _setSize (
int newsize,
int sizeofT);
62 int size()
const {
return _size; }
63 int allocatedSize()
const {
return _anum; }
64 void *
operator new (
size_t size);
65 void operator delete (
void *ptr,
size_t size);
67 void constructor() { _size=0; _anum=0; _data=0; }
71 void constructLocalArray (
int __anum);
88 memcpy (_data,x._data,x._size *
sizeof(T));
91 dArray () { constructor(); }
93 ~
dArray () { _freeAll(
sizeof(T)); }
94 void setSize (
int newsize) { _setSize (newsize,
sizeof(T)); }
95 T *data()
const {
return (T*) _data; }
96 T & operator[] (
int i)
const {
return ((T*)_data)[i]; }
97 void operator = (
const dArray<T> &x) { equals (x); }
99 void push (
const T item) {
100 if (_size < _anum) _size++;
else _setSize (_size+1,
sizeof(T));
101 memcpy (&(((T*)_data)[_size-1]), &item,
sizeof(T));
107 tmp1=_size; _size=x._size; x._size=tmp1;
108 tmp1=_anum; _anum=x._anum; x._anum=tmp1;
109 tmp2=_data; _data=x._data; x._data=tmp2;
114 void insert (
int i,
const T item) {
115 if (_size < _anum) _size++;
else _setSize (_size+1,
sizeof(T));
116 if (i >= (_size-1)) i = _size-1;
120 if (n>0) memmove (((T*)_data) + i+1, ((T*)_data) + i, n*
sizeof(T));
122 ((T*)_data)[i] = item;
125 void remove (
int i) {
126 if (i >= 0 && i < _size) {
128 if (n>0) memmove (((T*)_data) + i, ((T*)_data) + i+1, n*
sizeof(T));