Program Listing for File log_format.h
↰ Return to documentation for file (framework/logging/log_format.h)
// SPDX-FileCopyrightText: 2026 The OpenSn Authors <https://open-sn.github.io/opensn/>
// SPDX-License-Identifier: MIT
#pragma once
#include <cstddef>
#include <iomanip>
#include <ostream>
#include <string>
namespace opensn
{
enum class NumericFormatKind
{
FIXED,
SCIENTIFIC,
};
struct NumericFormat
{
int precision = 6;
NumericFormatKind kind = NumericFormatKind::SCIENTIFIC;
};
inline NumericFormat
Fixed(const int precision)
{
return {precision, NumericFormatKind::FIXED};
}
inline NumericFormat
Scientific(const int precision)
{
return {precision, NumericFormatKind::SCIENTIFIC};
}
inline void
AppendNumericField(std::ostream& out,
const std::string& label,
const std::size_t value,
const bool leading_separator = true)
{
out << (leading_separator ? ", " : " ") << label << " = " << value;
}
inline void
AppendNumericField(std::ostream& out,
const std::string& label,
const double value,
const NumericFormat format,
const bool leading_separator = true)
{
out << (leading_separator ? ", " : " ") << label << " = ";
if (format.kind == NumericFormatKind::FIXED)
out << std::fixed;
else
out << std::scientific;
out << std::setprecision(format.precision) << value << std::defaultfloat;
}
} // namespace opensn