Files
Extern/C3d/Include/tool_memory_leaks_check.h
SaraP 2ad90f425a Extern :
- C3d aggiornamento delle librerie ( 113832).
2021-06-01 09:47:02 +02:00

62 lines
2.7 KiB
C++

////////////////////////////////////////////////////////////////////////////////
/// Слежение за утечками
/**
\file
\brief Содержит класс MemoryLeaksVerifiable - базовый для контролируемых классов
*/
//
////////////////////////////////////////////////////////////////////////////////
#pragma once
#include <math_define.h>
#if ( defined(_MSC_VER) && (_MSC_VER > 1800) )
#define ENABLE_MEMORY_LEAKS_CHECK
#endif
namespace c3d // namespace C3D
{
#ifdef ENABLE_MEMORY_LEAKS_CHECK
//------------------------------------------------------------------------------
/** \brief \ru Базовый класс для контролируемых по утечкам классов.
\en Base class for leak-controlled classes. \~
\details \ru Базовый класс для контролируемых по утечкам классов.
В конструкторе объект регистрируется в менеджере утечек, в деструкторе удаляется из списка зарегистрированных.
Информация о всех объектах, которые остались в регистраторе, будет выведена. \n
\en Base class for leak-controlled classes. \n \~
\ingroup Base_Tools
*/
// ---
class MATH_CLASS MemoryLeaksVerifiable {
friend class MemoryLeaksCatcher;
private:
mutable size_t m_index; ///< \ru Индекс данного объекта в контейнере зарегистрированных объектов. \en The index of this object in the container of registered objects.
protected:
MemoryLeaksVerifiable();
virtual ~MemoryLeaksVerifiable();
MemoryLeaksVerifiable( const MemoryLeaksVerifiable & ) : MemoryLeaksVerifiable() {}
MemoryLeaksVerifiable( MemoryLeaksVerifiable && ) : MemoryLeaksVerifiable() {}
MemoryLeaksVerifiable & operator = ( const MemoryLeaksVerifiable & ) { return *this; }
MemoryLeaksVerifiable & operator = ( MemoryLeaksVerifiable && ) { return *this; }
private:
/// \ru Задать индекс данного объекта в контейнере зарегистрированных объектов. \en Set the index of this object in the container of registered objects.
void SetIndex( size_t index ) const { m_index = index; }
/// \ru Получить индекс данного объекта в контейнере зарегистрированных объектов. \en Get the index of this object in the container of registered objects.
size_t GetIndex() const { return m_index; }
};
#else
class MATH_CLASS MemoryLeaksVerifiable {};
#endif // ENABLE_MEMORY_LEAKS_CHECK
} // namespace C3D