mirror of
https://github.com/intel/intel-graphics-compiler.git
synced 2025-11-04 08:21:06 +08:00
116 lines
2.2 KiB
C++
116 lines
2.2 KiB
C++
/*========================== begin_copyright_notice ============================
|
|
|
|
Copyright (C) 2019-2021 Intel Corporation
|
|
|
|
SPDX-License-Identifier: MIT
|
|
|
|
============================= end_copyright_notice ===========================*/
|
|
|
|
#pragma once
|
|
|
|
#include "Debug.h"
|
|
|
|
#ifdef __cplusplus
|
|
|
|
namespace iSTD
|
|
{
|
|
|
|
|
|
/*****************************************************************************\
|
|
|
|
Function:
|
|
SafeDelete
|
|
|
|
Description:
|
|
Safe "delete ptr;"
|
|
|
|
Input:
|
|
Type &ptr - pointer to memory to delete
|
|
|
|
Output:
|
|
Type &ptr
|
|
|
|
\*****************************************************************************/
|
|
template <class Type>
|
|
inline void SafeDelete( Type &ptr )
|
|
{
|
|
if( ptr )
|
|
{
|
|
#if defined( _DEBUG ) && !defined( NO_EXCEPTION_HANDLING )
|
|
#if defined( __GNUC__ )
|
|
try
|
|
{
|
|
delete ptr;
|
|
}
|
|
catch (...)
|
|
{
|
|
ASSERT(0);
|
|
}
|
|
#else // defined( __GNUC__ )
|
|
__try
|
|
{
|
|
delete ptr;
|
|
}
|
|
__except (1)
|
|
{
|
|
ASSERT(0);
|
|
}
|
|
#endif // defined( __GNUC__ )
|
|
#else // defined( _DEBUG ) && !defined( NO_EXCEPTION_HANDLING )
|
|
delete ptr;
|
|
#endif // defined( _DEBUG ) && !defined( NO_EXCEPTION_HANDLING )
|
|
ptr = 0;
|
|
}
|
|
};
|
|
|
|
/*****************************************************************************\
|
|
|
|
Function:
|
|
SafeDeleteArray
|
|
|
|
Description:
|
|
Safe "delete[] ptr;"
|
|
|
|
Input:
|
|
Type &ptr - pointer to memory to delete
|
|
|
|
Output:
|
|
Type &ptr
|
|
|
|
\*****************************************************************************/
|
|
template <class Type>
|
|
inline void SafeDeleteArray( Type &ptr )
|
|
{
|
|
if( ptr )
|
|
{
|
|
#if defined( _DEBUG ) && !defined( NO_EXCEPTION_HANDLING )
|
|
#if defined( __GNUC__ )
|
|
try
|
|
{
|
|
delete[] ptr;
|
|
}
|
|
catch (int e)
|
|
{
|
|
ASSERT(0);
|
|
}
|
|
#else // defined( __GNUC__ )
|
|
__try
|
|
{
|
|
delete[] ptr;
|
|
}
|
|
__except (1)
|
|
{
|
|
ASSERT(0);
|
|
}
|
|
#endif // defined( __GNUC__ )
|
|
#else // defined( _DEBUG ) && !defined( NO_EXCEPTION_HANDLING )
|
|
delete[] ptr;
|
|
#endif // defined( _DEBUG ) && !defined( NO_EXCEPTION_HANDLING )
|
|
ptr = 0;
|
|
}
|
|
};
|
|
|
|
} // iSTD
|
|
|
|
#endif // __cplusplus
|