35 #include <string_view>    41 #ifndef STX_REPORT_RESERVE_SIZE    48     "... (error report truncated)";
    52               "STX_REPORT_RESERVE_SIZE must contain truncation message");
   131       : reserve_{}, report_size_{size} {
   135   explicit constexpr 
FixedReport(std::string_view 
const& info) noexcept
   136       : reserve_{}, report_size_{0} {
   139     size_t const str_size = info.size();
   141     size_t const str_clip_size =
   147     for (; pos < str_clip_size; pos++) {
   148       reserve_[pos] = info[pos];
   151     if (should_truncate) {
   166   [[nodiscard]] constexpr std::string_view 
what() const noexcept {
   167     return std::string_view(reserve_, report_size_);
   272   constexpr 
SpanReport() noexcept : custom_payload_{
nullptr}, report_size_{0} {}
   276       : custom_payload_{str}, report_size_{size} {}
   278   explicit constexpr 
SpanReport(std::string_view 
const& str) noexcept
   279       : custom_payload_{str.data()}, report_size_{str.size()} {}
   281   [[nodiscard]] constexpr std::string_view 
what() const noexcept {
   282     return std::string_view(custom_payload_, report_size_);
   292   const char* custom_payload_;
   307       : content_{report.what()} {}
   310       : content_{report.what()} {}
   318   [[nodiscard]] constexpr std::string_view 
const& 
data() const noexcept {
   323   std::string_view content_;
   330 template <
typename T>
   335 #define STX_INTERNAL_MAKE_REPORT_(STX_ARG_SIZE, STX_ARG_FORMAT, STX_ARG_VALUE) \   337   char fmt_buffer[STX_ARG_SIZE + 1];                                           \   338   int fmt_buffer_size = std::snprintf(fmt_buffer, STX_ARG_SIZE + 1,            \   339                                       STX_ARG_FORMAT, STX_ARG_VALUE);          \   340   if (fmt_buffer_size < 0 || fmt_buffer_size >= STX_ARG_SIZE + 1) {            \   341     return FixedReport(kFormatError, kFormatErrorSize);                        \   343     return FixedReport(fmt_buffer, fmt_buffer_size);                           \   346 template <
typename T>
   348                                             T 
const* 
const& ptr) noexcept {
   350                             reinterpret_cast<uintptr_t const>(ptr));
   353 template <
typename T>
   355                                             T* 
const& ptr) noexcept {
   357                             reinterpret_cast<uintptr_t>(ptr));
   361                                             int8_t 
const& v) noexcept {
   366                                             uint8_t 
const& v) noexcept {
   371                                             int16_t 
const& v) noexcept {
   376                                             uint16_t 
const& v) noexcept {
   381                                             int32_t 
const& v) noexcept {
   386                                             uint32_t 
const& v) noexcept {
   390 #undef STX_INTERNAL_MAKE_REPORT_   393                                            std::string_view 
const& v) noexcept {
   398                                            std::string 
const& v) noexcept {
 constexpr int kU16FmtSize
5 digits 
Definition: common.h:124
 
constexpr int kU32FmtSize
10 digits 
Definition: common.h:120
 
constexpr size_t const kFormatErrorSize
Definition: report.h:328
 
char[kReportReserveSize] storage_type
Definition: report.h:125
 
#define STX_INTERNAL_MAKE_REPORT_(STX_ARG_SIZE, STX_ARG_FORMAT, STX_ARG_VALUE)
Definition: report.h:335
 
constexpr std::string_view what() const noexcept
Definition: report.h:281
 
constexpr FixedReport(const char *str, size_t size) noexcept
size: string size excluding null-terminator 
Definition: report.h:130
 
constexpr FixedReport(std::string_view const &info) noexcept
Definition: report.h:135
 
constexpr char const kFormatError[]
Definition: report.h:327
 
constexpr char const kReportTruncationMessage[]
Definition: report.h:47
 
constexpr SpanReport(const char *str, size_t size) noexcept
size: string size excluding null-terminator 
Definition: report.h:275
 
constexpr ReportPayload(SpanReport const &report) noexcept
Definition: report.h:309
 
constexpr int kI16FmtSize
5 digits + 1 sign 
Definition: common.h:122
 
constexpr std::string_view const  & data() const noexcept
Definition: report.h:318
 
constexpr SpanReport() noexcept
Definition: report.h:272
 
constexpr ReportPayload(FixedReport const &report) noexcept
Definition: report.h:306
 
constexpr int kI8FmtSize
3 digits + 1 sign 
Definition: common.h:126
 
#define STX_END_NAMESPACE
Definition: config.h:329
 
constexpr int kI32FmtSize
10 digits + 1 sign 
Definition: common.h:118
 
constexpr ReportQuery const report_query
Tag value for dispatching reports. 
Definition: report.h:58
 
constexpr FixedReport() noexcept
Definition: report.h:127
 
constexpr int kxPtrFmtSize
Definition: common.h:110
 
constexpr int kU8FmtSize
3 digits 
Definition: common.h:128
 
#define STX_BEGIN_NAMESPACE
Definition: config.h:325
 
SpanReport operator>>(ReportQuery, std::string const &v) noexcept
Definition: report.h:397
 
Tag type for dispatching reports. 
Definition: report.h:55
 
constexpr size_t kReportReserveSize
Definition: report.h:42
 
constexpr std::string_view what() const noexcept
Definition: report.h:166
 
constexpr SpanReport(std::string_view const &str) noexcept
Definition: report.h:278