878ccfeaa3a230f980c38e2662f6e14487e935ab
[occt.git] / src / DebugTools / DebugTools.h
1 /*
2  Copyright (c) 1999-2012 OPEN CASCADE SAS
3
4  The content of this file is subject to the Open CASCADE Technology Public
5  License Version 6.5 (the "License"). You may not use the content of this file
6  except in compliance with the License. Please obtain a copy of the License
7  at http://www.opencascade.org and read it completely before using this file.
8
9  The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10  main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11
12  The Original Code and all software distributed under the License is
13  distributed on an "AS IS" basis, without warranty of any kind, and the
14  Initial Developer hereby disclaims all such warranties, including without
15  limitation, any warranties of merchantability, fitness for a particular
16  purpose or non-infringement. Please see the License for the specific terms
17  and conditions governing the rights and limitations under the License.
18
19 */
20
21 #ifndef _DEBUGTOOLS_H
22 #define _DEBUGTOOLS_H
23
24 #ifndef Standard_EXPORT
25 #ifdef WNT
26 #define Standard_EXPORT __declspec( dllexport )
27 #else
28 #define Standard_EXPORT extern
29 #endif
30 #endif
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 Standard_EXPORT int     perf_init_meter         (const char * const MeterName);
37 Standard_EXPORT int     perf_tick_meter         (const char * const MeterName);
38 Standard_EXPORT int     perf_tick_imeter        (const int  iMeter);
39 Standard_EXPORT int     perf_start_meter        (const char * const MeterName);
40 Standard_EXPORT int     perf_start_imeter       (const int  iMeter);
41 Standard_EXPORT int     perf_stop_meter         (const char * const MeterName);
42 Standard_EXPORT int     perf_stop_imeter        (const int  iMeter);
43 Standard_EXPORT int     perf_get_meter          (const char * const MeterName,
44                                                  int        * nb_enter,
45                                                  double     * seconds);
46 Standard_EXPORT void    perf_close_meter        (const char * const MeterName);
47 Standard_EXPORT void    perf_print_all_meters   (void);
48 Standard_EXPORT void    perf_destroy_all_meters (void);
49
50 #ifdef __cplusplus
51 }
52 #endif
53
54 #ifdef PERF_ENABLE_METERS
55 #define PERF_TICK_METER(_m_name) {              \
56   static int __iMeter = 0;                      \
57   if  (__iMeter)  perf_tick_imeter (__iMeter);  \
58   else __iMeter = perf_tick_meter (_m_name);    \
59 }
60
61 #define PERF_START_METER(_m_name) {             \
62   static int __iMeter = 0;                      \
63   if  (__iMeter)  perf_start_imeter (__iMeter); \
64   else __iMeter = perf_start_meter (_m_name);   \
65 }
66
67 #define PERF_STOP_METER(_m_name) {              \
68   static int __iMeter = 0;                      \
69   if  (__iMeter)  perf_stop_imeter (__iMeter);  \
70   else __iMeter = perf_stop_meter (_m_name);    \
71 }
72
73 #define PERF_CLOSE_METER(_m_name) perf_close_meter (_m_name);
74
75 #define PERF_PRINT_ALL {                        \
76   perf_print_all_meters();                      \
77 }
78
79 #define PERF_PRINT_ALL_METERS {                 \
80   perf_print_all_meters();                      \
81   perf_destroy_all_meters();                    \
82 }
83
84 #else
85 #define PERF_TICK_METER(_m_name)
86 #define PERF_START_METER(_m_name)
87 #define PERF_STOP_METER(_m_name)
88 #define PERF_CLOSE_METER(_m_name)
89 #define PERF_PRINT_ALL
90 #define PERF_PRINT_ALL_METERS
91 #endif
92
93 #endif