diff options
Diffstat (limited to 'vbench/src/vbench/core/buffered_output.cpp')
-rw-r--r-- | vbench/src/vbench/core/buffered_output.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/vbench/src/vbench/core/buffered_output.cpp b/vbench/src/vbench/core/buffered_output.cpp new file mode 100644 index 00000000000..36e01e55fd5 --- /dev/null +++ b/vbench/src/vbench/core/buffered_output.cpp @@ -0,0 +1,31 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/fastos/fastos.h> +#include "buffered_output.h" + +namespace vbench { + +BufferedOutput & +BufferedOutput::printf(const char *fmt, ...) +{ + ensureFree(256); + int space = (_data.size - _pos); + int size; + va_list ap; + va_start(ap, fmt); + size = vsnprintf(_data.data + _pos, space, fmt, ap); + va_end(ap); + assert(size >= 0); + if (size >= space) { + space = size + 1; + ensureFree(space); + va_start(ap, fmt); + size = vsnprintf(_data.data + _pos, space, fmt, ap); + va_end(ap); + assert((size + 1) == space); + } + _pos += size; + return *this; +} + +} // namespace vbench |