haiku/headers/private/shared/FunctionTracer.h

47 lines
934 B
C++

/*
* Copyright © 2008 Stephan Aßmus <superstippi@gmx.de>
* All rights reserved. Distributed under the terms of the MIT/X11 license.
*/
#ifndef FUNCTION_TRACER_H
#define FUNCTION_TRACER_H
#include <stdio.h>
#include <String.h>
namespace BPrivate {
class FunctionTracer {
public:
FunctionTracer(const char* className, const char* functionName,
int32& depth)
: fFunctionName(),
fPrepend(),
fFunctionDepth(depth)
{
fFunctionDepth++;
fPrepend.Append(' ', fFunctionDepth * 2);
fFunctionName << className << "::" << functionName << "()";
printf("%s%s {\n", fPrepend.String(), fFunctionName.String());
}
~FunctionTracer()
{
// printf("%s - leave\n", fFunctionName.String());
printf("%s}\n", fPrepend.String());
fFunctionDepth--;
}
private:
BString fFunctionName;
BString fPrepend;
int32& fFunctionDepth;
};
} // namespace BPrivate
using BPrivate::FunctionTracer;
#endif // FUNCTION_TRACER_H