1 /*
2     This file is part of darktable,
3     Copyright (C) 2010-2020 darktable developers.
4 
5     darktable is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9 
10     darktable is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14 
15     You should have received a copy of the GNU General Public License
16     along with darktable.  If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #pragma once
20 
21 #include "gui/gtk.h"
22 
23 
24 #ifdef USE_DARKTABLE_PROFILING
25 #define TIMER_START(name, description)                                                                       \
26   dt_timer_t *name = dt_timer_start_with_name(__FILE__, __FUNCTION__, description)
27 #else
28 #define TIMER_START(name, description)                                                                       \
29   {                                                                                                          \
30   }
31 #endif
32 
33 #ifdef USE_DARKTABLE_PROFILING
34 #define TIMER_STOP(name) dt_timer_stop_with_name(name)
35 #else
36 #define TIMER_STOP(name)                                                                                     \
37   {                                                                                                          \
38   }
39 #endif
40 
41 #ifdef USE_DARKTABLE_PROFILING
42 typedef struct dt_timer_t
43 {
44   const char *file;
45   const char *function;
46   const char *description;
47   GTimer *timer;
48 } dt_timer_t;
49 
50 dt_timer_t *dt_timer_start_with_name(const char *file, const char *function, const char *description);
51 void dt_timer_stop_with_name(dt_timer_t *);
52 #endif
53 
54 // modelines: These editor modelines have been set for all relevant files by tools/update_modelines.sh
55 // vim: shiftwidth=2 expandtab tabstop=2 cindent
56 // kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
57