1
0
Files
libcmo21/Ballance/BMapInspector/Utils.hpp
2026-01-30 20:40:21 +08:00

46 lines
1.3 KiB
C++

#pragma once
#include <yycc.hpp>
#include <yycc/macro/class_copy_move.hpp>
#include <string>
#include <string_view>
#include <vector>
#define PRIuSIZET "zu"
namespace BMapInspector::Utils {
enum class ReportKind { Error, Warning, Info };
struct Report {
ReportKind kind; ///< The kind of this report.
std::u8string rule; ///< The name of rule adding this report.
std::u8string content; ///< The content of this report.
};
class Reporter {
public:
Reporter();
~Reporter();
YYCC_DEFAULT_COPY_MOVE(Reporter)
private:
void AddReport(ReportKind kind, const std::u8string_view& rule, const std::u8string_view& content);
public:
void WriteInfo(const std::u8string_view& rule, const std::u8string_view& content);
void FormatInfo(const std::u8string_view& rule, const char8_t* fmt, ...);
void WriteWarning(const std::u8string_view& rule, const std::u8string_view& content);
void FormatWarning(const std::u8string_view& rule, const char8_t* fmt, ...);
void WriteError(const std::u8string_view& rule, const std::u8string_view& content);
void FormatError(const std::u8string_view& rule, const char8_t* fmt, ...);
public:
void PrintConclusion() const;
void PrintReport() const;
private:
std::vector<Report> reports;
};
} // namespace BMapInspector::Utils