1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_CANVAS_DEBUG_HXX
21 #define INCLUDED_CANVAS_DEBUG_HXX
23 // shared_ptr debugging
24 // --------------------
26 #ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
28 # include <sal/config.h>
29 # include <boost/shared_ptr.hpp>
31 ::std::size_t find_unreachable_objects( bool );
33 # if OSL_DEBUG_LEVEL > 2
34 # include <osl/diagnose.h>
35 # define SHARED_PTR_LEFTOVERS(a) OSL_TRACE("%s\n%s: Unreachable objects still use %d bytes\n", \
36 BOOST_CURRENT_FUNCTION, a, \
37 find_unreachable_objects(true) )
39 /** This macro shows how much memory is still used by shared_ptrs
41 Use this macro at places in the code where normally all shared_ptr
42 objects should have been deleted. You'll get the number of bytes
43 still contained in those objects, which quite possibly are prevented
44 from deletion by circular references.
46 # define SHARED_PTR_LEFTOVERS(a) OSL_TRACE("%s\n%s: Unreachable objects still use %d bytes\n", \
47 BOOST_CURRENT_FUNCTION, a, \
48 find_unreachable_objects(false) )
53 # define SHARED_PTR_LEFTOVERS(a) ((void)0)
57 #endif // ! defined(INCLUDED_CANVAS_DEBUG_HXX)
59 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */