diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2023-09-28 16:01:53 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2023-10-01 10:52:44 (GMT) |
commit | b0612796b1fde0532c06744f23f8ee59eee156c2 (patch) | |
tree | f4db388d397dfcff2b11ad265df03da515425ec2 /Source/cmDebugTools.h | |
parent | 92adbb5d8c2a043c6e6c8539e9817a75a813fa1b (diff) | |
download | CMake-b0612796b1fde0532c06744f23f8ee59eee156c2.zip CMake-b0612796b1fde0532c06744f23f8ee59eee156c2.tar.gz CMake-b0612796b1fde0532c06744f23f8ee59eee156c2.tar.bz2 |
cmDebugTools: add header
This provides a utility macro which prints out:
- location of the call;
- the expression being evaluated; and
- the value of the expression.
Evaluates to the value of the expression.
Inspired by Rust's `dbg!` macro.
See: https://doc.rust-lang.org/stable/std/macro.dbg.html
Diffstat (limited to 'Source/cmDebugTools.h')
-rw-r--r-- | Source/cmDebugTools.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/cmDebugTools.h b/Source/cmDebugTools.h new file mode 100644 index 0000000..99c0c6b --- /dev/null +++ b/Source/cmDebugTools.h @@ -0,0 +1,23 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#pragma once + +#include <iostream> + +#define CM_DBG(expr) cm::dbg_impl(__FILE__, __LINE__, #expr, expr) + +namespace cm { + +namespace { + +template <typename T> +T dbg_impl(const char* fname, int line, const char* expr, T value) +{ + std::cerr << fname << ':' << line << ": " << expr << " = " << value + << std::endl; + return value; +} + +} // namespace + +} // namespace cm |