Monado OpenXR Runtime
Loading...
Searching...
No Matches
openvr_logger.hpp
Go to the documentation of this file.
1// Copyright 2018-2022, Collabora, Ltd.
2// Copyright 2026, NVIDIA CORPORATION.
3// Copyright 2026, Beyley Cardellio
4// SPDX-License-Identifier: BSL-1.0
5/*!
6 * @file
7 * @brief Logging functions.
8 * @author Jakob Bornecrantz <jakob@collabora.com>
9 * @author Beyley Cardellio <ep1cm1n10n123@gmail.com>
10 * @ingroup openvr_common
11 */
12
13#pragma once
14
15#include "util/u_pretty_print.h"
16#include "util/u_logging.h"
17
18#include <type_traits>
19#include <typeinfo>
20
21
22namespace xrt::state_trackers::openvr {
23
24template <class T>
25T &
26classMacroImpl(const T *t);
27#define CURRENT_CLASSNAME typeid(std::remove_reference<decltype(classMacroImpl(this))>::type).name()
28
30{
31 const char *class_name;
32 const char *api_func_name;
33 u_logging_level log_level;
34};
35
36void
37openvr_log_init(openvr_logger &logger, const char *class_name, const char *api_func_name);
38
39#define OPENVR_LOGGER_INIT(logger) openvr_log_init(logger, CURRENT_CLASSNAME, __FUNCTION__)
40
41void
42openvr_log(openvr_logger &logger, u_logging_level log_level, const char *fmt, ...) XRT_PRINTF_FORMAT(3, 4);
43
44#define OPENVR_LOG_TRACE(logger, fmt, ...) openvr_log(logger, U_LOGGING_TRACE, fmt __VA_OPT__(, ) __VA_ARGS__)
45#define OPENVR_LOG_DEBUG(logger, fmt, ...) openvr_log(logger, U_LOGGING_DEBUG, fmt __VA_OPT__(, ) __VA_ARGS__)
46#define OPENVR_LOG_INFO(logger, fmt, ...) openvr_log(logger, U_LOGGING_INFO, fmt __VA_OPT__(, ) __VA_ARGS__)
47#define OPENVR_LOG_WARN(logger, fmt, ...) openvr_log(logger, U_LOGGING_WARN, fmt __VA_OPT__(, ) __VA_ARGS__)
48#define OPENVR_LOG_ERROR(logger, fmt, ...) openvr_log(logger, U_LOGGING_ERROR, fmt __VA_OPT__(, ) __VA_ARGS__)
49
50//! Specialized macro for logging an unimplemented function.
51#define OPENVR_LOG_UNIMPLEMENTED(logger, fmt, ...) \
52 do { \
53 OPENVR_LOG_WARN(logger, "[UNIMPLEMENTED] " fmt __VA_OPT__(, ) __VA_ARGS__); \
54 } while (false)
55
56//! Specialized macro for logging an unimplemented function and returning a value.
57#define OPENVR_LOG_UNIMPLEMENTED_RET(logger, fmt, ret, ...) \
58 do { \
59 OPENVR_LOG_UNIMPLEMENTED(logger, fmt __VA_OPT__(, ) __VA_ARGS__); \
60 return ret; \
61 } while (false)
62
63//! Logs an xrt_result_t error with a formatted message.
64#define OPENVR_LOG_ERROR_XRET(logger, fmt, xret, ...) \
65 do { \
66 u_pp_sink_stack_only sink; \
67 u_pp_delegate_t dg = u_pp_sink_stack_only_init(&sink); \
68 u_pp_xrt_result(dg, xret); \
69 OPENVR_LOG_ERROR(logger, fmt " (xrt_result: %s)" __VA_OPT__(, ) __VA_ARGS__, sink.buffer); \
70 } while (false)
71
72}; // namespace xrt::state_trackers::openvr
u_logging_level
Logging level enum.
Definition u_logging.h:45
Definition openvr_logger.hpp:30
Basic logging functionality.
Pretty printing various Monado things.