From 43f530b4ec8c6cf11d01b5075e2f4489f0bfbae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sun, 11 Nov 2018 16:48:46 -0800 Subject: [PATCH] Cleanup. --- include/bx/readerwriter.h | 5 ++++- src/string.cpp | 13 ++++++------- tests/string_test.cpp | 1 - tests/vsnprintf_test.cpp | 17 +++++++++++++++++ 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/include/bx/readerwriter.h b/include/bx/readerwriter.h index c5f2fd4..df32c69 100644 --- a/include/bx/readerwriter.h +++ b/include/bx/readerwriter.h @@ -263,7 +263,10 @@ namespace bx int32_t write(WriterI* _writer, const StringView& _str, Error* _err = NULL); /// - int32_t write(WriterI* _writer, Error* _err, const char* _format, ...); + int32_t write(WriterI* _writer, const StringView& _format, va_list _argList, Error* _err); + + /// + int32_t write(WriterI* _writer, Error* _err, const StringView& _format, ...); /// Write repeat the same value. int32_t writeRep(WriterI* _writer, uint8_t _byte, int32_t _size, Error* _err = NULL); diff --git a/src/string.cpp b/src/string.cpp index 3a25456..0d768e2 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -891,9 +891,9 @@ namespace bx } } // anonymous namespace - int32_t write(WriterI* _writer, const char* _format, va_list _argList, Error* _err) + int32_t write(WriterI* _writer, const StringView& _format, va_list _argList, Error* _err) { - MemoryReader reader(_format, uint32_t(strLen(_format) ) ); + MemoryReader reader(_format.getPtr(), _format.getLength() ); int32_t size = 0; @@ -1103,15 +1103,13 @@ namespace bx } } - size += write(_writer, '\0', _err); - return size; } - int32_t write(WriterI* _writer, Error* _err, const char* _format, ...) + int32_t write(WriterI* _writer, Error* _err, const StringView& _format, ...) { va_list argList; - va_start(argList, _format); + va_start(argList, &_format); int32_t total = write(_writer, _format, argList, _err); va_end(argList); return total; @@ -1132,6 +1130,7 @@ namespace bx if (err.isOk() ) { + size += write(&writer, '\0', &err); return size - 1 /* size without '\0' terminator */; } } @@ -1143,7 +1142,7 @@ namespace bx int32_t size = write(&sizer, _format, argListCopy, &err); va_end(argListCopy); - return size - 1 /* size without '\0' terminator */; + return size; } int32_t vsnprintf(char* _out, int32_t _max, const char* _format, va_list _argList) diff --git a/tests/string_test.cpp b/tests/string_test.cpp index 180d5ea..b261ee9 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -464,6 +464,5 @@ TEST_CASE("strFindBlock", "") const bx::StringView test1(test0, 1); bx::StringView result = bx::strFindBlock(test1, '{', '}'); - printf("%.*s", result.getLength(), result.getPtr() ); REQUIRE(19 == result.getLength() ); } diff --git a/tests/vsnprintf_test.cpp b/tests/vsnprintf_test.cpp index 035c17b..0fa3a39 100644 --- a/tests/vsnprintf_test.cpp +++ b/tests/vsnprintf_test.cpp @@ -5,6 +5,8 @@ #include "test.h" #include +#include + #include #include @@ -173,3 +175,18 @@ TEST_CASE("vsnprintf", "") , world.getLength(), world.getPtr() ) ); } + +TEST_CASE("vsnprintf write") +{ + char tmp[64]; + bx::StaticMemoryBlock mb(tmp, sizeof(tmp)); + bx::MemoryWriter writer(&mb); + + bx::Error err; + int32_t len = bx::write(&writer, &err, "%d", 1389); + REQUIRE(err.isOk()); + REQUIRE(len == 4); + + bx::StringView str(tmp, len); + REQUIRE(0 == bx::strCmp(str, "1389")); +}