4#include "Stroika/Foundation/StroikaPreComp.h"
9#include "BadFormatException.h"
29 String mkMessage_OffsetInfo_ (
const optional<unsigned int>& lineNumber,
const optional<unsigned int>& columnNumber,
const optional<uint64_t>& fileOffset)
33 result += Format (
"Line {}"_f, *lineNumber);
35 result += Format (
"; Column {}"_f, *columnNumber);
39 if (not result.
empty ()) {
42 result += Format (
"; FileOffset {}"_f, *fileOffset);
46 inline String mkMessage_ ()
48 return "Badly formatted input"sv;
52 return details.empty () ? mkMessage_ () : details;
54 String mkMessage_ (
const optional<unsigned int>& lineNumber,
const optional<unsigned int>& columnNumber, optional<uint64_t> fileOffset)
57 String lineInfoExtra = mkMessage_OffsetInfo_ (lineNumber, columnNumber, fileOffset);
58 if (not lineInfoExtra.empty ()) {
59 msg <<
" ("sv << lineInfoExtra <<
")."sv;
63 String mkMessage_ (
const String& details,
const optional<unsigned int>& lineNumber,
const optional<unsigned int>& columnNumber,
64 const optional<uint64_t>& fileOffset)
67 String lineInfoExtra = mkMessage_OffsetInfo_ (lineNumber, columnNumber, fileOffset);
68 if (not lineInfoExtra.empty ()) {
69 msg <<
" ("sv << lineInfoExtra <<
")."sv;
75DataExchange::BadFormatException::BadFormatException ()
76 : inherited{mkMessage_ ()}
80DataExchange::BadFormatException::BadFormatException (
const String& details)
81 : inherited{mkMessage_ (details)}
86DataExchange::BadFormatException::BadFormatException (
const String& details,
const optional<unsigned int>& lineNumber,
87 const optional<unsigned int>& columnNumber,
const optional<uint64_t>& fileOffset)
88 : inherited{mkMessage_ (details, lineNumber, columnNumber, fileOffset)}
89 , fLineNumber_{lineNumber}
90 , fColumnNumber_{columnNumber}
91 , fFileOffset_{fileOffset}
Similar to String, but intended to more efficiently construct a String. Mutable type (String is large...
nonvirtual bool empty() const noexcept
String is like std::u32string, except it is much easier to use, often much more space efficient,...