#ifndef ROOT_TMEMSTATDEPEND
#define ROOT_TMEMSTATDEPEND
#define _INIT_TOP_STECK extern void *g_global_stack_end;
#define _GET_TO_STECK g_global_stack_end = __builtin_frame_address(1);
class TString;
class TMemStatDepend
{
public:
typedef void* (*MallocHookFunc_t)(size_t size, const void *caller);
typedef void (*FreeHookFunc_t)(void* ptr, const void *caller);
static MallocHookFunc_t GetMallocHook();
static FreeHookFunc_t GetFreeHook();
static void SetMallocHook(MallocHookFunc_t p);
static void SetFreeHook(FreeHookFunc_t p);
static size_t Backtrace(void **trace, size_t size, Bool_t _bUseGNUBuildinBacktrace = kFALSE);
static char** BacktraceSymbols(void **trace, size_t size);
static void GetSymbols(void *pFunction, TString &strInfo, TString &strLib, TString &strFun, TString &strLine);
static void Demangle(char *codeInfo, TString &str);
};
#endif