| 386 | // |
| 387 | |
| 388 | std::string string_format(const char * fmt, ...) { |
| 389 | va_list ap; |
| 390 | va_list ap2; |
| 391 | va_start(ap, fmt); |
| 392 | va_copy(ap2, ap); |
| 393 | int size = vsnprintf(NULL, 0, fmt, ap); |
| 394 | GGML_ASSERT(size >= 0 && size < INT_MAX); // NOLINT |
| 395 | std::vector<char> buf(size + 1); |
| 396 | int size2 = vsnprintf(buf.data(), size + 1, fmt, ap2); |
| 397 | GGML_ASSERT(size2 == size); |
| 398 | va_end(ap2); |
| 399 | va_end(ap); |
| 400 | return std::string(buf.data(), size); |
| 401 | } |
| 402 | |
| 403 | std::string string_strip(const std::string & str) { |
| 404 | size_t start = 0; |
no test coverage detected