From 7800d0b283458df5fcc762df909e74adb9e2781b Mon Sep 17 00:00:00 2001 From: Jim Morris Date: Sun, 13 Sep 2015 20:50:05 -0700 Subject: [PATCH] update utils append_parameters --- src/libs/utils.cpp | 11 ++++++----- src/libs/utils.h | 4 ++-- src/testframework/unittests/libs/TEST_utils.cpp | 9 ++++++--- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/libs/utils.cpp b/src/libs/utils.cpp index dc4ac195..99498002 100644 --- a/src/libs/utils.cpp +++ b/src/libs/utils.cpp @@ -15,7 +15,6 @@ #include #include #include -#include using std::string; @@ -232,11 +231,13 @@ vector parse_number_list(const char *str) return r; } -std::string append_parameters(std::map params) +int append_parameters(char *buf, std::vector> params, size_t bufsize) { - std::ostringstream oss; + size_t n= 0; for(auto &i : params) { - oss << i.first << i.second << " "; + if(n >= bufsize) break; + buf[n++]= i.first; + n += snprintf(&buf[n], bufsize-n, "%1.4f ", i.second); } - return oss.str(); + return n; } diff --git a/src/libs/utils.h b/src/libs/utils.h index 71c10b3b..480ceeda 100644 --- a/src/libs/utils.h +++ b/src/libs/utils.h @@ -4,7 +4,7 @@ #include #include #include -#include + using std::string; using std::vector; @@ -36,6 +36,6 @@ void system_reset( bool dfu= false ); string absolute_from_relative( string path ); -std::string append_parameters(std::map params); +int append_parameters(char *buf, std::vector> params, size_t bufsize); #endif diff --git a/src/testframework/unittests/libs/TEST_utils.cpp b/src/testframework/unittests/libs/TEST_utils.cpp index 167d0891..d3396542 100644 --- a/src/testframework/unittests/libs/TEST_utils.cpp +++ b/src/testframework/unittests/libs/TEST_utils.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "easyunit/test.h" @@ -37,8 +38,10 @@ TEST(UtilsTest,parse_number_list) TEST(UtilsTest,append_parameters) { - std::string str; + char buf[132]; - str= append_parameters({{'X', 1}, {'Y', 2}, {'Z', 3}}); - ASSERT_EQUALS(str, "X1 Y2 Z3 "); + int n= append_parameters(buf, {{'X', 1}, {'Y', 2}, {'Z', 3}}, sizeof(buf)); + //printf("%d - %s\n", n, buf); + ASSERT_TRUE(n == 24); + ASSERT_TRUE(strcmp(buf, "X1.0000 Y2.0000 Z3.0000 ") == 0); } -- 2.20.1