[prev in list] [next in list] [prev in thread] [next in thread]
List: semsdev
Subject: [Semsdev] git:master: b/f: fix json2arg for numbers with exponent
From: Stefan Sayer <stefan.sayer () googlemail ! com>
Date: 2014-02-27 14:53:18
Message-ID: 20140227145318.C777AEF8074 () rimmer ! ryngle ! com
[Download RAW message or body]
Module: sems
Branch: master
Commit: 1e7d29957d6196f9ac228f56a35023555b9e9260
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=1e7d29957d6196f9ac228f56a35023555b9e9260
Author: Stefan Sayer <stefan.sayer@googlemail.com>
Committer: Stefan Sayer <stefan.sayer@googlemail.com>
Date: Mon Feb 17 17:07:10 2014 +0100
b/f: fix json2arg for numbers with exponent
---
core/AmArg.cpp | 2 +-
core/jsonxx.cpp | 58 +++++++++++++++++++++---------------------
core/tests/test_jsonarg.cpp | 3 +-
3 files changed, 32 insertions(+), 31 deletions(-)
diff --git a/core/AmArg.cpp b/core/AmArg.cpp
index 4350c4d..5977830 100644
--- a/core/AmArg.cpp
+++ b/core/AmArg.cpp
@@ -381,7 +381,7 @@ void AmArg::assertArrayFmt(const char* format) const {
for (size_t i=0;i<fmt_len;i++) {
switch (format[i]) {
case 'i': assertArgInt(get(i)); got+='i'; break;
- case 'l': assertArgLongLong(get(i)); got+='i'; break;
+ case 'l': assertArgLongLong(get(i)); got+='l'; break;
case 't': assertArgBool(get(i)); got+='t'; break;
case 'f': assertArgDouble(get(i)); got+='f'; break;
case 's': assertArgCStr(get(i)); got+='s'; break;
diff --git a/core/jsonxx.cpp b/core/jsonxx.cpp
index b1b79e7..88f416c 100644
--- a/core/jsonxx.cpp
+++ b/core/jsonxx.cpp
@@ -167,35 +167,35 @@ bool parse_float(std::istream& input, double* value) {
*/
-bool parse_number(std::istream& input, long* value) {
- eat_whitespaces(input);
- char ch;
- std::string value_str;
- int sign = 1;
- if (match("-", input)) {
- sign = -1;
- } else {
- match("+", input);
- }
- while(input && !input.eof()) {
- input.get(ch);
- if (!isdigit(ch)) {
- input.putback(ch);
- break;
- }
- value_str.push_back(ch);
- }
- if (value_str.size() > 0) {
- std::istringstream(value_str) >> *value;
- *value*=sign;
- return true;
- } else {
- return false;
- }
-}
+// bool parse_number(std::istream& input, long* value) {
+// eat_whitespaces(input);
+// char ch;
+// std::string value_str;
+// int sign = 1;
+// if (match("-", input)) {
+// sign = -1;
+// } else {
+// match("+", input);
+// }
+// while(input && !input.eof()) {
+// input.get(ch);
+// if (!isdigit(ch)) {
+// input.putback(ch);
+// break;
+// }
+// value_str.push_back(ch);
+// }
+// if (value_str.size() > 0) {
+// std::istringstream(value_str) >> *value;
+// *value*=sign;
+// return true;
+// } else {
+// return false;
+// }
+// }
-bool parse_number(std::istream& input, int* value) {
+bool parse_number(std::istream& input, long* value) {
eat_whitespaces(input);
char ch;
std::string value_str;
@@ -204,7 +204,7 @@ bool parse_number(std::istream& input, int* value) {
int sign = 1;
int e_sign = 1;
bool correct = true;
- int e_value;
+ long e_value;
enum {
p_number,
@@ -303,7 +303,7 @@ bool parse_number(std::istream& input, int* value) {
return false;
}
- *value *= pow(10, e_value);
+ *value *= powl(10, e_value);
}
return true;
diff --git a/core/tests/test_jsonarg.cpp b/core/tests/test_jsonarg.cpp
index aa889fc..4cf77e1 100644
--- a/core/tests/test_jsonarg.cpp
+++ b/core/tests/test_jsonarg.cpp
@@ -54,7 +54,8 @@ FCTMF_SUITE_BGN(test_jsonarg) {
// DBG("s.c_str() %s\n", s.c_str() );
AmArg rpc_params;
fct_chk(json2arg(s.c_str(), rpc_params));
- fct_chk(isArgInt(rpc_params["result"]) && rpc_params["result"].asInt() == 0);
+ fct_chk(isArgInt(rpc_params["result"]));
+ fct_chk(rpc_params["result"].asInt() == 0);
} FCT_TEST_END();
FCT_TEST_BGN(json_number_e_pow) {
_______________________________________________
Semsdev mailing list
Semsdev@lists.iptel.org
http://lists.iptel.org/mailman/listinfo/semsdev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic