blob: ac12fe01defc2a9913ed5576cacdc3a7051bb92c [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// See LICENSE file in the project root for full license information.
//
#ifdef ARMNN_LEAK_CHECKING_ENABLED
#include "LeakChecking.hpp"
#include "gperftools/heap-checker.h"
struct ScopedLeakChecker::Impl
{
HeapLeakChecker m_LeakChecker;
Impl(const std::string & name)
: m_LeakChecker(name.c_str())
{
}
};
ScopedLeakChecker::ScopedLeakChecker(const std::string & name)
: m_Impl(new Impl(name))
{
}
ScopedLeakChecker::~ScopedLeakChecker() {}
bool ScopedLeakChecker::IsActive()
{
return HeapLeakChecker::IsActive();
}
bool ScopedLeakChecker::NoLeaks()
{
return (IsActive() ? m_Impl->m_LeakChecker.NoLeaks() : true);
}
ssize_t ScopedLeakChecker::BytesLeaked() const
{
return (IsActive() ? m_Impl->m_LeakChecker.BytesLeaked(): 0);
}
ssize_t ScopedLeakChecker::ObjectsLeaked() const
{
return (IsActive() ? m_Impl->m_LeakChecker.ObjectsLeaked(): 0 );
}
struct ScopedDisableLeakChecking::Impl
{
HeapLeakChecker::Disabler m_Disabler;
};
ScopedDisableLeakChecking::ScopedDisableLeakChecking()
: m_Impl(new Impl)
{
}
ScopedDisableLeakChecking::~ScopedDisableLeakChecking()
{
}
#endif // ARMNN_LEAK_CHECKING_ENABLED