Extern :
- C3d aggiornamento delle librerie.
This commit is contained in:
+77
-14
@@ -19,11 +19,6 @@
|
||||
#include <tool_err_handling.h>
|
||||
|
||||
|
||||
#ifdef __DEBUG_MEMORY_ALLOCATE_FREE_
|
||||
#include <typeinfo.h>
|
||||
#endif // __DEBUG_MEMORY_ALLOCATE_FREE_
|
||||
|
||||
|
||||
class reader;
|
||||
class writer;
|
||||
|
||||
@@ -84,11 +79,11 @@ public: // Общие методы матриц (двумерных массив
|
||||
bool SetSize( size_t n ) { return SetSize( n, n ); } ///< \ru Установить размер. \en Set size.
|
||||
|
||||
/// \ru Получить элемент массива. \en Get an element of the array.
|
||||
const Type & GetElem( size_t ln, size_t cn ) const { PRECONDITION( !!parr && ln < l && cn < c ); return parr[ln][cn]; }
|
||||
const Type & GetElem( size_t ln, size_t cn ) const;
|
||||
/// \ru Установить элемент массива. \en Set an element of the array.
|
||||
void SetElem( size_t ln, size_t cn, const Type & v ) { PRECONDITION( !!parr && ln < l && cn < c ); parr[ln][cn] = v; }
|
||||
void SetElem( size_t ln, size_t cn, const Type & v );
|
||||
/// \ru Оператор доступа по индексам. \en Access by indices operator.
|
||||
const Type & operator () ( size_t i, size_t j ) const { PRECONDITION( i < l && j < c ); return parr[i][j]; }
|
||||
const Type & operator () ( size_t i, size_t j ) const;
|
||||
/// \ru Расписать массив нулями. \en Assign zeros to array.
|
||||
Array2<Type> & SetZero() { zero_array( *this ); return *this; }
|
||||
/// \ru Функция присваивания. \en An assignment function.
|
||||
@@ -100,13 +95,13 @@ public: // Общие методы матриц (двумерных массив
|
||||
|
||||
public:
|
||||
/// \ru Оператор доступа по индексам. \en Access by indices operator.
|
||||
Type & operator () ( size_t i, size_t j ) { PRECONDITION( i < l && j < c ); return parr[i][j]; }
|
||||
Type & operator () ( size_t i, size_t j );
|
||||
/// \ru Выдать адрес начала строки. \en Get an address of the row start.
|
||||
const Type * GetLine( size_t i = 0 ) const { PRECONDITION( i < l ); return parr[i]; }
|
||||
const Type * GetLine( size_t i = 0 ) const;
|
||||
/// \ru Выдать адрес начала строки. \en Get an address of the row start.
|
||||
Type * SetLine( size_t i = 0 ) { PRECONDITION( i < l ); return parr[i]; }
|
||||
Type * SetLine( size_t i = 0 );
|
||||
/// \ru Инициировать элемент. \en Initiate an element.
|
||||
void Init( size_t ln, size_t cn, const Type & v ) { PRECONDITION( !!parr && ln < l && cn < c ); parr[ln][cn] = v; }
|
||||
void Init( size_t ln, size_t cn, const Type & v );
|
||||
|
||||
/// \ru Функции, выделяющие потенциально большие участки памяти, возвращают результат операции (успех/ошибка).
|
||||
/// \en Functions that allocate potentially large memory, return the operation result (success/error).
|
||||
@@ -247,6 +242,74 @@ inline bool Array2<Type>::SetSize( size_t lSize, size_t cSize ) {
|
||||
return ::set_array_size( *this, lSize, cSize );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Получить элемент массива. \en Get an element of the array.
|
||||
// ---
|
||||
template <class Type>
|
||||
const Type & Array2<Type>::GetElem( size_t ln, size_t cn ) const {
|
||||
PRECONDITION( !!parr && ln < l && cn < c );
|
||||
return parr[ln][cn];
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Установить элемент массива. \en Set an element of the array.
|
||||
// ---
|
||||
template <class Type>
|
||||
void Array2<Type>::SetElem( size_t ln, size_t cn, const Type & v ) {
|
||||
PRECONDITION( !!parr && ln < l && cn < c );
|
||||
if ( !!parr && ln < l && cn < c )
|
||||
parr[ln][cn] = v;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Оператор доступа по индексам. \en Access by indices operator.
|
||||
// ---
|
||||
template <class Type>
|
||||
const Type & Array2<Type>::operator() ( size_t i, size_t j ) const {
|
||||
PRECONDITION( i < l && j < c );
|
||||
return parr[i][j];
|
||||
}
|
||||
|
||||
/// \ru Оператор доступа по индексам. \en Access by indices operator.
|
||||
template <class Type>
|
||||
Type & Array2<Type>::operator() ( size_t i, size_t j ) {
|
||||
PRECONDITION( i < l && j < c );
|
||||
return parr[i][j];
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Выдать адрес начала строки. \en Get an address of the row start.
|
||||
// ---
|
||||
template <class Type>
|
||||
const Type * Array2<Type>::GetLine( size_t i ) const {
|
||||
PRECONDITION( i < l );
|
||||
if ( i < l )
|
||||
return parr[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Выдать адрес начала строки. \en Get an address of the row start.
|
||||
// ---
|
||||
template <class Type>
|
||||
Type * Array2<Type>::SetLine( size_t i ) {
|
||||
PRECONDITION( i < l );
|
||||
if ( i < l )
|
||||
return parr[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Инициировать элемент. \en Initiate an element.
|
||||
// ---
|
||||
template <class Type>
|
||||
void Array2<Type>::Init( size_t ln, size_t cn, const Type & v ) {
|
||||
PRECONDITION( !!parr && ln < l && cn < c );
|
||||
if ( !!parr && ln < l && cn < c )
|
||||
parr[ln][cn] = v;
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// \ru Поменять местами строки. \en Swap lines.
|
||||
// ---
|
||||
@@ -396,7 +459,7 @@ inline bool Array2<Type>::CatchLinePointers( size_t newCount )
|
||||
l = newCount;
|
||||
|
||||
#ifdef __REALLOC_ARRAYS_STATISTIC_
|
||||
::ReallocArrayStatistic( oldParr, oldSize * SIZE_OF_POINTER, parr, newCount * SIZE_OF_POINTER, 2/*Array2*/ );
|
||||
REALLOC_ARRAY_STATISTICS( oldParr, oldSize * SIZE_OF_POINTER, parr, newCount * SIZE_OF_POINTER, 2/*Array2*/ );
|
||||
#endif // __REALLOC_ARRAYS_STATISTIC_
|
||||
}
|
||||
catch ( const std::bad_alloc & ) {
|
||||
@@ -457,7 +520,7 @@ inline bool realloc_line( Type *& line, size_t oldSize, size_t newSize )
|
||||
#endif // USE_REALLOC_IN_ARRAYS
|
||||
|
||||
#ifdef __REALLOC_ARRAYS_STATISTIC_
|
||||
::ReallocArrayStatistic( oldParr, oldSize * sizeOfType, line, newSize * sizeOfType, 2/*Array2*/ );
|
||||
REALLOC_ARRAY_STATISTICS( oldParr, oldSize * sizeOfType, line, newSize * sizeOfType, 2/*Array2*/ );
|
||||
#endif // __REALLOC_ARRAYS_STATISTIC_
|
||||
}
|
||||
catch ( const std::bad_alloc & ) {
|
||||
|
||||
Reference in New Issue
Block a user