xref: /haiku/headers/private/shared/FunctionTracer.h (revision 2b76973fa2401f7a5edf68e6470f3d3210cbcff3)
1 /*
2  * Copyright © 2008 Stephan Aßmus <superstippi@gmx.de>
3  * All rights reserved. Distributed under the terms of the MIT/X11 license.
4  */
5 #ifndef FUNCTION_TRACER_H
6 #define FUNCTION_TRACER_H
7 
8 #include <stdio.h>
9 
10 #include <String.h>
11 
12 namespace BPrivate {
13 
14 class FunctionTracer {
15 public:
16 	FunctionTracer(const char* className, const char* functionName,
17 			int32& depth)
18 		: fFunctionName(),
19 		  fPrepend(),
20 		  fFunctionDepth(depth)
21 	{
22 		fFunctionDepth++;
23 		fPrepend.Append(' ', fFunctionDepth * 2);
24 		fFunctionName << className << "::" << functionName << "()";
25 
26 		printf("%s%s {\n", fPrepend.String(), fFunctionName.String());
27 	}
28 
29 	 ~FunctionTracer()
30 	{
31 //		printf("%s - leave\n", fFunctionName.String());
32 		printf("%s}\n", fPrepend.String());
33 		fFunctionDepth--;
34 	}
35 
36 private:
37 	BString	fFunctionName;
38 	BString	fPrepend;
39 	int32&	fFunctionDepth;
40 };
41 
42 }	// namespace BPrivate
43 
44 using BPrivate::FunctionTracer;
45 
46 #endif // FUNCTION_TRACER_H
47