From c7e5a8541e6652e5e75adfe53706843a86e5c039 Mon Sep 17 00:00:00 2001 From: Colby Nyce Date: Mon, 16 Mar 2026 13:13:11 -0700 Subject: [PATCH 1/2] Fix std::setprecision bugs --- include/simdb/apps/AppManager.hpp | 3 +++ include/simdb/pipeline/PollingThread.hpp | 2 ++ include/simdb/utils/StreamFormatters.hpp | 27 ++++++++++++++++++++++++ include/simdb/utils/TickTock.hpp | 3 +++ 4 files changed, 35 insertions(+) create mode 100644 include/simdb/utils/StreamFormatters.hpp diff --git a/include/simdb/apps/AppManager.hpp b/include/simdb/apps/AppManager.hpp index 0cc596fd..7d6eab2e 100644 --- a/include/simdb/apps/AppManager.hpp +++ b/include/simdb/apps/AppManager.hpp @@ -6,6 +6,7 @@ #include "simdb/pipeline/PipelineManager.hpp" #include "simdb/sqlite/DatabaseManager.hpp" #include "simdb/utils/ThreadSafeLogger.hpp" +#include "simdb/utils/StreamFormatters.hpp" #include #include @@ -765,6 +766,8 @@ class AppManager ~ScopedTimer() { + [[maybe_unused]] ios_format_saver fmt_saver(std::cout); + auto end = std::chrono::high_resolution_clock::now(); std::chrono::duration dur = end - start_; auto us = std::chrono::duration_cast(dur).count(); diff --git a/include/simdb/pipeline/PollingThread.hpp b/include/simdb/pipeline/PollingThread.hpp index 0c906af0..63b036eb 100644 --- a/include/simdb/pipeline/PollingThread.hpp +++ b/include/simdb/pipeline/PollingThread.hpp @@ -4,6 +4,7 @@ #include "simdb/Exceptions.hpp" #include "simdb/pipeline/Runnable.hpp" +#include "simdb/utils/StreamFormatters.hpp" #include #include @@ -200,6 +201,7 @@ class PollingThread runnable->print(std::cout, 4); } + [[maybe_unused]] ios_format_saver fmt_saver(std::cout); std::cout << "\n"; std::cout << " Performance report:\n"; std::cout << " Num times run: " << num_times_run_ << "\n"; diff --git a/include/simdb/utils/StreamFormatters.hpp b/include/simdb/utils/StreamFormatters.hpp new file mode 100644 index 00000000..8f79ed91 --- /dev/null +++ b/include/simdb/utils/StreamFormatters.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include + +namespace simdb +{ + +class ios_format_saver +{ +public: + explicit ios_format_saver(std::ios& s) + : stream_(s) + { + state_.copyfmt(s); + } + + ~ios_format_saver() + { + stream_.copyfmt(state_); + } + +private: + std::ios& stream_; + std::ios state_{nullptr}; +}; + +} // namespace simdb diff --git a/include/simdb/utils/TickTock.hpp b/include/simdb/utils/TickTock.hpp index 379aa34f..3b4b1bf0 100644 --- a/include/simdb/utils/TickTock.hpp +++ b/include/simdb/utils/TickTock.hpp @@ -9,6 +9,8 @@ #include #include +#include "simdb/utils/StreamFormatters.hpp" + namespace simdb::utils { /*! @@ -44,6 +46,7 @@ class SelfProfiler sorted_avg_times.push_back(method_results.second / method_results.first); } + [[maybe_unused]] ios_format_saver fmt_saver(std::cout); std::sort(sorted_avg_times.begin(), sorted_avg_times.end(), std::greater()); for (auto avg_time : sorted_avg_times) { From 24855e8bb09fa00dc1ab5f96e6131959eaad08c0 Mon Sep 17 00:00:00 2001 From: Colby Nyce Date: Mon, 16 Mar 2026 13:15:05 -0700 Subject: [PATCH 2/2] Run clang-format --- include/simdb/apps/AppManager.hpp | 2 +- include/simdb/utils/StreamFormatters.hpp | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/include/simdb/apps/AppManager.hpp b/include/simdb/apps/AppManager.hpp index 7d6eab2e..0088b8f3 100644 --- a/include/simdb/apps/AppManager.hpp +++ b/include/simdb/apps/AppManager.hpp @@ -5,8 +5,8 @@ #include "simdb/apps/App.hpp" #include "simdb/pipeline/PipelineManager.hpp" #include "simdb/sqlite/DatabaseManager.hpp" -#include "simdb/utils/ThreadSafeLogger.hpp" #include "simdb/utils/StreamFormatters.hpp" +#include "simdb/utils/ThreadSafeLogger.hpp" #include #include diff --git a/include/simdb/utils/StreamFormatters.hpp b/include/simdb/utils/StreamFormatters.hpp index 8f79ed91..9fe1378c 100644 --- a/include/simdb/utils/StreamFormatters.hpp +++ b/include/simdb/utils/StreamFormatters.hpp @@ -2,22 +2,18 @@ #include -namespace simdb -{ +namespace simdb { class ios_format_saver { public: - explicit ios_format_saver(std::ios& s) - : stream_(s) + explicit ios_format_saver(std::ios& s) : + stream_(s) { state_.copyfmt(s); } - ~ios_format_saver() - { - stream_.copyfmt(state_); - } + ~ios_format_saver() { stream_.copyfmt(state_); } private: std::ios& stream_;