/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/common/logger/call_tracer.cpp
55 строк
1 KB
sosssego
[Analyzers][CPP]Turn on C26451 and fix code (#21230)
25 окт 2022, 19:33
Не верифицирован
25 окт 2022, 19:33
19c4255
Код
Авторство
О чём код?
#include "pch.h" #include "call_tracer.h" #include <map> #include <thread> namespace { // Non-localizable const std::string entering = " Enter"; const std::string exiting = " Exit"; std::mutex indentLevelMutex; std::map<std::thread::id, int> indentLevel; std::string GetIndentation() { std::unique_lock lock(indentLevelMutex); int level = indentLevel[std::this_thread::get_id()]; if (level <= 0) { return {}; } else { return std::string(static_cast<int64_t>(2) * min(level, 64) - 1, ' ') + " - "; } } void Indent() { std::unique_lock lock(indentLevelMutex); indentLevel[std::this_thread::get_id()]++; } void Unindent() { std::unique_lock lock(indentLevelMutex); indentLevel[std::this_thread::get_id()]--; } } CallTracer::CallTracer(const char* functionName) : functionName(functionName) { Logger::trace((GetIndentation() + functionName + entering).c_str()); Indent(); } CallTracer::~CallTracer() { Unindent(); Logger::trace((GetIndentation() + functionName + exiting).c_str()); }