aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/yajl/yajl_parser.cpp
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2022-11-30 23:47:12 +0300
committerqrort <qrort@yandex-team.com>2022-11-30 23:47:12 +0300
commit22f8ae0e3f5d68b92aecccdf96c1d841a0334311 (patch)
treebffa27765faf54126ad44bcafa89fadecb7a73d7 /contrib/libs/yajl/yajl_parser.cpp
parent332b99e2173f0425444abb759eebcb2fafaa9209 (diff)
downloadydb-22f8ae0e3f5d68b92aecccdf96c1d841a0334311.tar.gz
validate canons without yatest_common
Diffstat (limited to 'contrib/libs/yajl/yajl_parser.cpp')
-rw-r--r--contrib/libs/yajl/yajl_parser.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/contrib/libs/yajl/yajl_parser.cpp b/contrib/libs/yajl/yajl_parser.cpp
new file mode 100644
index 00000000000..fc605306825
--- /dev/null
+++ b/contrib/libs/yajl/yajl_parser.cpp
@@ -0,0 +1,29 @@
+#include "yajl_parser.h"
+
+#include <errno.h>
+
+#include <util/string/cast.h>
+
+long long
+yajl_parse_integer(const unsigned char *number, unsigned int length) {
+ try {
+ return FromString<long long>((const char*)number, length);
+ } catch (const yexception& ex) {
+ errno = ERANGE;
+ return (*number == '-') ? LLONG_MIN : LLONG_MAX;
+ }
+}
+
+unsigned long long
+yajl_parse_unsigned_integer(const unsigned char *number, unsigned int length) {
+ try {
+ return FromString<unsigned long long>((const char*)number, length);
+ } catch (const yexception& ex) {
+ errno = ERANGE;
+ return (*number == '-') ? 0ull : ULLONG_MAX;
+ }
+}
+
+extern "C" void FormatDoubleYandex(char* buf, size_t len, double val) {
+ buf[ToString(val, buf, len)] = 0;
+}