| 80 | } |
| 81 | |
| 82 | std::string format(const char * fmt, ...) { |
| 83 | va_list ap; |
| 84 | va_list ap2; |
| 85 | va_start(ap, fmt); |
| 86 | va_copy(ap2, ap); |
| 87 | int size = vsnprintf(NULL, 0, fmt, ap); |
| 88 | GGML_ASSERT(size >= 0 && size < INT_MAX); // NOLINT |
| 89 | std::vector<char> buf(size + 1); |
| 90 | int size2 = vsnprintf(buf.data(), size + 1, fmt, ap2); |
| 91 | GGML_ASSERT(size2 == size); |
| 92 | va_end(ap2); |
| 93 | va_end(ap); |
| 94 | return std::string(buf.data(), size); |
| 95 | } |
| 96 | |
| 97 | std::string llama_format_tensor_shape(const std::vector<int64_t> & ne) { |
| 98 | char buf[256]; |
no test coverage detected