- C3d aggiornamento delle librerie.
This commit is contained in:
Dario Sassi
2020-09-14 16:42:31 +00:00
parent 555eae9594
commit e8f0fa2d27
332 changed files with 59308 additions and 52918 deletions
+77 -14
View File
@@ -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 & ) {