| 592 | template <typename Char> |
| 593 | template <typename StrChar> |
| 594 | void fmt::BasicWriter<Char>::write_str( |
| 595 | const Arg::StringValue<StrChar> &str, const FormatSpec &spec) { |
| 596 | // Check if StrChar is convertible to Char. |
| 597 | internal::CharTraits<Char>::convert(StrChar()); |
| 598 | if (spec.type_ && spec.type_ != 's') |
| 599 | internal::report_unknown_type(spec.type_, "string"); |
| 600 | const StrChar *s = str.value; |
| 601 | std::size_t size = str.size; |
| 602 | if (size == 0) { |
| 603 | if (!s) |
| 604 | FMT_THROW(FormatError("string pointer is null")); |
| 605 | if (*s) |
| 606 | size = std::char_traits<StrChar>::length(s); |
| 607 | } |
| 608 | write_str(s, size, spec); |
| 609 | } |
| 610 | |
| 611 | template <typename Char> |
| 612 | inline Arg fmt::BasicFormatter<Char>::parse_arg_index(const Char *&s) { |
no test coverage detected