Monado OpenXR Runtime
u_debug.h
Go to the documentation of this file.
1 // Copyright 2019, Collabora, Ltd.
2 // SPDX-License-Identifier: BSL-1.0
3 /*!
4  * @file
5  * @brief Small debug helpers.
6  * @author Jakob Bornecrantz <jakob@collabora.com>
7  * @ingroup aux_util
8  *
9  * Debug get option helpers heavily inspired from mesa ones.
10  */
11 
12 #pragma once
13 
14 #include "xrt/xrt_compiler.h"
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 
21 const char *
22 debug_get_option(const char *name, const char *_default);
23 
24 bool
25 debug_get_bool_option(const char *name, bool _default);
26 
27 long
28 debug_get_num_option(const char *name, long _default);
29 
30 float
31 debug_get_float_option(const char *name, float _default);
32 
33 #define DEBUG_GET_ONCE_OPTION(suffix, name, _default) \
34  static const char *debug_get_option_##suffix() \
35  { \
36  static bool gotten = false; \
37  static const char *stored; \
38  if (!gotten) { \
39  gotten = true; \
40  stored = debug_get_option(name, _default); \
41  } \
42  return stored; \
43  }
44 
45 #define DEBUG_GET_ONCE_BOOL_OPTION(suffix, name, _default) \
46  static bool debug_get_bool_option_##suffix() \
47  { \
48  static bool gotten = false; \
49  static bool stored; \
50  if (!gotten) { \
51  gotten = true; \
52  stored = debug_get_bool_option(name, _default); \
53  } \
54  return stored; \
55  }
56 
57 #define DEBUG_GET_ONCE_NUM_OPTION(suffix, name, _default) \
58  static long debug_get_num_option_##suffix() \
59  { \
60  static long gotten = false; \
61  static long stored; \
62  if (!gotten) { \
63  gotten = true; \
64  stored = debug_get_num_option(name, _default); \
65  } \
66  return stored; \
67  }
68 
69 #define DEBUG_GET_ONCE_FLOAT_OPTION(suffix, name, _default) \
70  static long debug_get_float_option_##suffix() \
71  { \
72  static long gotten = false; \
73  static long stored; \
74  if (!gotten) { \
75  gotten = true; \
76  stored = debug_get_float_option(name, _default); \
77  } \
78  return stored; \
79  }
80 #ifdef __cplusplus
81 }
82 #endif
Header holding common defines.