mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 15:04:00 +00:00
Smart pointer enhancements, initial commit
[SVN r12439]
This commit is contained in:
parent
8231310c4d
commit
dbcc58d984
52
include/boost/assert.hpp
Normal file
52
include/boost/assert.hpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#ifndef BOOST_ASSERT_HPP_INCLUDED
|
||||||
|
#define BOOST_ASSERT_HPP_INCLUDED
|
||||||
|
|
||||||
|
#if _MSC_VER >= 1020
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/assert.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// Permission to copy, use, modify, sell and distribute this software
|
||||||
|
// is granted provided this copyright notice appears in all copies.
|
||||||
|
// This software is provided "as is" without express or implied
|
||||||
|
// warranty, and with no claim as to its suitability for any purpose.
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// When BOOST_DEBUG is not defined, it defaults to 0 (off)
|
||||||
|
// for backward compatibility with programs that do not
|
||||||
|
// define a boost_error handler
|
||||||
|
//
|
||||||
|
// After a reasonable transition period, the default can be
|
||||||
|
// changed to something more appropriate.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_DEBUG
|
||||||
|
#define BOOST_DEBUG 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool boost_error(char const * expr, char const * func, char const * file, long line);
|
||||||
|
|
||||||
|
#if BOOST_DEBUG
|
||||||
|
|
||||||
|
#include <boost/current_function.hpp>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#ifndef BOOST_ASSERT
|
||||||
|
|
||||||
|
# define BOOST_ASSERT(expr) ((expr) || !boost_error(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__) || (assert(expr), true))
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_ASSERT
|
||||||
|
|
||||||
|
#else // #if BOOST_DEBUG
|
||||||
|
|
||||||
|
#undef BOOST_ASSERT
|
||||||
|
#define BOOST_ASSERT(expr) ((void)0)
|
||||||
|
|
||||||
|
#endif // #ifdef BOOST_DEBUG
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_ASSERT_HPP_INCLUDED
|
73
include/boost/checked_delete.hpp
Normal file
73
include/boost/checked_delete.hpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
|
||||||
|
#define BOOST_CHECKED_DELETE_HPP_INCLUDED
|
||||||
|
|
||||||
|
#if _MSC_VER >= 1020
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/checked_delete.hpp
|
||||||
|
//
|
||||||
|
// Copyright (c) 1999, 2000, 2001, 2002 boost.org
|
||||||
|
//
|
||||||
|
// Permission to copy, use, modify, sell and distribute this software
|
||||||
|
// is granted provided this copyright notice appears in all copies.
|
||||||
|
// This software is provided "as is" without express or implied
|
||||||
|
// warranty, and with no claim as to its suitability for any purpose.
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
// verify that types are complete for increased safety
|
||||||
|
|
||||||
|
template< typename T > inline void checked_delete(T * x)
|
||||||
|
{
|
||||||
|
typedef char type_must_be_complete[sizeof(T)];
|
||||||
|
delete x;
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename T > inline void checked_array_delete(T * x)
|
||||||
|
{
|
||||||
|
typedef char type_must_be_complete[sizeof(T)];
|
||||||
|
delete [] x;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> struct checked_deleter
|
||||||
|
{
|
||||||
|
typedef void result_type;
|
||||||
|
typedef T * argument_type;
|
||||||
|
|
||||||
|
void operator()(T * x)
|
||||||
|
{
|
||||||
|
checked_delete(x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// checked_deleter<void> is needed by shared_ptr<void>::reset(0)
|
||||||
|
|
||||||
|
template<> struct checked_deleter<void>
|
||||||
|
{
|
||||||
|
typedef void result_type;
|
||||||
|
typedef void * argument_type;
|
||||||
|
|
||||||
|
void operator()(void * x)
|
||||||
|
{
|
||||||
|
::operator delete(x); // avoid g++ warning
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T> struct checked_array_deleter
|
||||||
|
{
|
||||||
|
typedef void result_type;
|
||||||
|
typedef T * argument_type;
|
||||||
|
|
||||||
|
void operator()(T * x)
|
||||||
|
{
|
||||||
|
checked_array_delete(x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
|
56
include/boost/current_function.hpp
Normal file
56
include/boost/current_function.hpp
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
||||||
|
#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
||||||
|
|
||||||
|
#if _MSC_VER >= 1020
|
||||||
|
#pragma once
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// boost/current_function.hpp - BOOST_CURRENT_FUNCTION
|
||||||
|
//
|
||||||
|
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
//
|
||||||
|
// Permission to copy, use, modify, sell and distribute this software
|
||||||
|
// is granted provided this copyright notice appears in all copies.
|
||||||
|
// This software is provided "as is" without express or implied
|
||||||
|
// warranty, and with no claim as to its suitability for any purpose.
|
||||||
|
//
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
void current_function_helper()
|
||||||
|
{
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
|
||||||
|
|
||||||
|
#elif defined(__FUNCSIG__)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __FUNCSIG__
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __FUNC__
|
||||||
|
|
||||||
|
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION __func__
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# define BOOST_CURRENT_FUNCTION "(unknown)"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
|
||||||
|
} // namespace boost
|
||||||
|
|
||||||
|
#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
|
Loading…
x
Reference in New Issue
Block a user