Extern :
- C3d aggiornamento delle librerie.
This commit is contained in:
+20
-20
@@ -17,10 +17,6 @@
|
||||
#include <templ_rp_array.h>
|
||||
|
||||
|
||||
#ifdef __DEBUG_MEMORY_ALLOCATE_FREE_
|
||||
#include <typeinfo.h>
|
||||
#endif // __DEBUG_MEMORY_ALLOCATE_FREE_
|
||||
|
||||
|
||||
// \ru Реализация методов для чтения/записи массива лежит в templ_p_array_rw.h \en Implementation of methods for reading/writing of array is located in templ_p_array_rw.h
|
||||
|
||||
@@ -262,22 +258,26 @@ template <class Type>
|
||||
inline Type * PArray<Type>::RemoveInd( size_t delIndex, DelType del ) {
|
||||
PRECONDITION( delIndex < RPArray<Type>::count );
|
||||
|
||||
const Type **d = RPArray<Type>::GetAddr() + delIndex;
|
||||
Type *r = (Type*)*d;
|
||||
Type * r = 0;
|
||||
|
||||
// \ru сначала приведем в порядок массив ... \en put an array in order at first ...
|
||||
memmove( d, d+1, (RPArray<Type>::count - delIndex - 1) * SIZE_OF_POINTER );
|
||||
RPArray<Type>::count--;
|
||||
if ( delIndex < RPArray<Type>::count ) {
|
||||
const Type ** d = RPArray<Type>::GetAddr() + delIndex;
|
||||
r = (Type *)*d;
|
||||
|
||||
// \ru ... а теперь будем удалять \en ... and now we will delete
|
||||
if ( del==Delete || (del==defDelete && owns) ) {
|
||||
PRECONDITION( !r || nowDeletedElem != r );
|
||||
nowDeletedElem = r;
|
||||
// \ru сначала приведем в порядок массив ... \en put an array in order at first ...
|
||||
memmove( d, d + 1, (RPArray<Type>::count - delIndex - 1) * SIZE_OF_POINTER );
|
||||
RPArray<Type>::count--;
|
||||
|
||||
delete r;
|
||||
r = 0;
|
||||
// \ru ... а теперь будем удалять \en ... and now we will delete
|
||||
if ( del == Delete || ( del == defDelete && owns ) ) {
|
||||
PRECONDITION( !r || nowDeletedElem != r );
|
||||
nowDeletedElem = r;
|
||||
|
||||
nowDeletedElem = 0;
|
||||
delete r;
|
||||
r = 0;
|
||||
|
||||
nowDeletedElem = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
@@ -366,7 +366,7 @@ bool set_Parray_size( PArray<Type> & arr, size_t newSize, bool clear ) {
|
||||
// ---
|
||||
template <class Type>
|
||||
inline void PIArray<Type>::ForEachI( ParIteratorFunc func, void * pars ) const {
|
||||
C3D_ASSERT( PArray<Type>::nowDeletedElem == 0 );
|
||||
PRECONDITION( PArray<Type>::nowDeletedElem == 0 );
|
||||
for_each_in_array( *this, func, pars );
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ inline void PIArray<Type>::ForEachI( ParIteratorFunc func, void * pars ) const {
|
||||
// ---
|
||||
template <class Type>
|
||||
inline size_t PIArray<Type>::FirstThatI( CompareFunc func, void * pars, size_t from ) const {
|
||||
C3D_ASSERT( PArray<Type>::nowDeletedElem == 0 );
|
||||
PRECONDITION( PArray<Type>::nowDeletedElem == 0 );
|
||||
return first_that_in_array( *this, func, pars, from );
|
||||
}
|
||||
|
||||
@@ -398,7 +398,7 @@ inline size_t PIArray<Type>::FirstThatI( CompareFunc func, void * pars, size_t f
|
||||
// ---
|
||||
template <class Type>
|
||||
inline void PMIArray<Type>::ForEach( ParIteratorMemFunc func, void * pars ) const {
|
||||
C3D_ASSERT( PArray<Type>::nowDeletedElem == 0 );
|
||||
PRECONDITION( PArray<Type>::nowDeletedElem == 0 );
|
||||
for_each_in_array( *this, func, pars );
|
||||
}
|
||||
|
||||
@@ -408,7 +408,7 @@ inline void PMIArray<Type>::ForEach( ParIteratorMemFunc func, void * pars ) cons
|
||||
// ---
|
||||
template <class Type>
|
||||
inline size_t PMIArray<Type>::FirstThat( CompareMemFunc func, void * pars, size_t from ) const {
|
||||
C3D_ASSERT( PArray<Type>::nowDeletedElem == 0 );
|
||||
PRECONDITION( PArray<Type>::nowDeletedElem == 0 );
|
||||
return first_that_in_array( *this, func, pars, from );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user