Fix root number parsing
This commit is contained in:
parent
2ba67c2bc2
commit
0bb83e06bc
|
@ -49,5 +49,5 @@ jobs:
|
||||||
mkdir build32
|
mkdir build32
|
||||||
cd build32
|
cd build32
|
||||||
cmake -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
cmake -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
||||||
cmake --build . --target parse_many_test jsoncheck basictests numberparsingcheck stringparsingcheck errortests integer_tests pointercheck --verbose
|
cmake --build . --target parse_many_test jsoncheck basictests ondemand_basictests numberparsingcheck stringparsingcheck errortests integer_tests pointercheck --verbose
|
||||||
ctest -R "(parse_many_test|jsoncheck|basictests|stringparsingcheck|numberparsingcheck|errortests|integer_tests|pointercheck)" --output-on-failure
|
ctest -R "(parse_many_test|jsoncheck|basictests|stringparsingcheck|numberparsingcheck|errortests|integer_tests|pointercheck)" --output-on-failure
|
||||||
|
|
|
@ -49,11 +49,11 @@ jobs:
|
||||||
mkdir build64
|
mkdir build64
|
||||||
cd build64
|
cd build64
|
||||||
cmake -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
cmake -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
||||||
cmake --build . --target parse_many_test jsoncheck basictests numberparsingcheck stringparsingcheck errortests integer_tests pointercheck --verbose
|
cmake --build . --target parse_many_test jsoncheck basictests ondemand_basictests numberparsingcheck stringparsingcheck errortests integer_tests pointercheck --verbose
|
||||||
ctest -R "(parse_many_test|jsoncheck|basictests|stringparsingcheck|numberparsingcheck|errortests|integer_tests|pointercheck)" --output-on-failure
|
ctest -R "(parse_many_test|jsoncheck|basictests|stringparsingcheck|numberparsingcheck|errortests|integer_tests|pointercheck)" --output-on-failure
|
||||||
cd ..
|
cd ..
|
||||||
mkdir build64debug
|
mkdir build64debug
|
||||||
cd build64debug
|
cd build64debug
|
||||||
cmake -DCMAKE_BUILD_TYPE=Debug -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
cmake -DCMAKE_BUILD_TYPE=Debug -DSIMDJSON_BUILD_STATIC=ON -DSIMDJSON_COMPETITION=OFF -DSIMDJSON_GOOGLE_BENCHMARKS=OFF -DSIMDJSON_ENABLE_THREADS=OFF ..
|
||||||
cmake --build . --target parse_many_test jsoncheck basictests numberparsingcheck stringparsingcheck errortests integer_tests pointercheck --verbose
|
cmake --build . --target parse_many_test jsoncheck basictests ondemand_basictests numberparsingcheck stringparsingcheck errortests integer_tests pointercheck --verbose
|
||||||
ctest -R "(parse_many_test|jsoncheck|basictests|stringparsingcheck|numberparsingcheck|errortests|integer_tests|pointercheck)" --output-on-failure
|
ctest -R "(parse_many_test|jsoncheck|basictests|stringparsingcheck|numberparsingcheck|errortests|integer_tests|pointercheck)" --output-on-failure
|
||||||
|
|
|
@ -7,8 +7,10 @@
|
||||||
namespace simdjson {
|
namespace simdjson {
|
||||||
namespace arm64 {
|
namespace arm64 {
|
||||||
|
|
||||||
|
namespace {
|
||||||
using namespace simdjson;
|
using namespace simdjson;
|
||||||
using namespace simdjson::dom;
|
using namespace simdjson::dom;
|
||||||
|
}
|
||||||
|
|
||||||
class implementation final : public simdjson::implementation {
|
class implementation final : public simdjson::implementation {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -6,8 +6,10 @@
|
||||||
namespace simdjson {
|
namespace simdjson {
|
||||||
namespace fallback {
|
namespace fallback {
|
||||||
|
|
||||||
|
namespace {
|
||||||
using namespace simdjson;
|
using namespace simdjson;
|
||||||
using namespace simdjson::dom;
|
using namespace simdjson::dom;
|
||||||
|
}
|
||||||
|
|
||||||
class implementation final : public simdjson::implementation {
|
class implementation final : public simdjson::implementation {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -41,7 +41,7 @@ simdjson_really_inline simdjson_result<object> document::get_object() & noexcept
|
||||||
}
|
}
|
||||||
simdjson_really_inline simdjson_result<uint64_t> document::get_uint64() noexcept {
|
simdjson_really_inline simdjson_result<uint64_t> document::get_uint64() noexcept {
|
||||||
assert_at_start();
|
assert_at_start();
|
||||||
return consume_if_success( iter.parse_uint64(json) );
|
return consume_if_success( iter.parse_root_uint64(json) );
|
||||||
}
|
}
|
||||||
simdjson_really_inline simdjson_result<int64_t> document::get_int64() noexcept {
|
simdjson_really_inline simdjson_result<int64_t> document::get_int64() noexcept {
|
||||||
assert_at_start();
|
assert_at_start();
|
||||||
|
|
|
@ -215,7 +215,7 @@ SIMDJSON_WARN_UNUSED simdjson_result<uint64_t> json_iterator::parse_root_uint64(
|
||||||
uint8_t tmpbuf[20+1]; // <20 digits> is the longest possible unsigned integer
|
uint8_t tmpbuf[20+1]; // <20 digits> is the longest possible unsigned integer
|
||||||
if (!copy_to_buffer(json, tmpbuf)) { logger::log_error(*this, "Root number more than 20 characters"); return NUMBER_ERROR; }
|
if (!copy_to_buffer(json, tmpbuf)) { logger::log_error(*this, "Root number more than 20 characters"); return NUMBER_ERROR; }
|
||||||
logger::log_value(*this, "uint64", "", 0);
|
logger::log_value(*this, "uint64", "", 0);
|
||||||
auto result = numberparsing::parse_unsigned(buf);
|
auto result = numberparsing::parse_unsigned(tmpbuf);
|
||||||
if (result.error()) { logger::log_error(*this, "Error parsing unsigned integer"); return result.error(); }
|
if (result.error()) { logger::log_error(*this, "Error parsing unsigned integer"); return result.error(); }
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ SIMDJSON_WARN_UNUSED simdjson_result<int64_t> json_iterator::parse_root_int64(co
|
||||||
uint8_t tmpbuf[20+1]; // -<19 digits> is the longest possible integer
|
uint8_t tmpbuf[20+1]; // -<19 digits> is the longest possible integer
|
||||||
if (!copy_to_buffer(json, tmpbuf)) { logger::log_error(*this, "Root number more than 20 characters"); return NUMBER_ERROR; }
|
if (!copy_to_buffer(json, tmpbuf)) { logger::log_error(*this, "Root number more than 20 characters"); return NUMBER_ERROR; }
|
||||||
logger::log_value(*this, "int64", "", 0);
|
logger::log_value(*this, "int64", "", 0);
|
||||||
auto result = numberparsing::parse_integer(buf);
|
auto result = numberparsing::parse_integer(tmpbuf);
|
||||||
if (result.error()) { report_error(result.error(), "Error parsing integer"); }
|
if (result.error()) { report_error(result.error(), "Error parsing integer"); }
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ SIMDJSON_WARN_UNUSED simdjson_result<double> json_iterator::parse_root_double(co
|
||||||
uint8_t tmpbuf[1074+8+1];
|
uint8_t tmpbuf[1074+8+1];
|
||||||
if (!copy_to_buffer(json, tmpbuf)) { logger::log_error(*this, "Root number more than 1082 characters"); return NUMBER_ERROR; }
|
if (!copy_to_buffer(json, tmpbuf)) { logger::log_error(*this, "Root number more than 1082 characters"); return NUMBER_ERROR; }
|
||||||
logger::log_value(*this, "double", "", 0);
|
logger::log_value(*this, "double", "", 0);
|
||||||
auto result = numberparsing::parse_double(buf);
|
auto result = numberparsing::parse_double(tmpbuf);
|
||||||
if (result.error()) { report_error(result.error(), "Error parsing double"); }
|
if (result.error()) { report_error(result.error(), "Error parsing double"); }
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,10 @@
|
||||||
namespace simdjson {
|
namespace simdjson {
|
||||||
namespace westmere {
|
namespace westmere {
|
||||||
|
|
||||||
|
namespace {
|
||||||
using namespace simdjson;
|
using namespace simdjson;
|
||||||
using namespace simdjson::dom;
|
using namespace simdjson::dom;
|
||||||
|
}
|
||||||
|
|
||||||
class implementation final : public simdjson::implementation {
|
class implementation final : public simdjson::implementation {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -34,11 +34,14 @@ function(add_cpp_test TEST_NAME)
|
||||||
set_property(TEST ${TEST_NAME} PROPERTY WILL_FAIL TRUE)
|
set_property(TEST ${TEST_NAME} PROPERTY WILL_FAIL TRUE)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Most tests need test data, and many need windows headers.
|
# Most tests need test data, and many need windows headers.
|
||||||
link_libraries(simdjson-internal-flags test-data simdjson-windows-headers)
|
link_libraries(simdjson-internal-flags test-data simdjson-windows-headers)
|
||||||
|
|
||||||
include(${PROJECT_SOURCE_DIR}/cmake/add_cpp_test.cmake)
|
include(${PROJECT_SOURCE_DIR}/cmake/add_cpp_test.cmake)
|
||||||
|
|
||||||
|
add_subdirectory(ondemand)
|
||||||
|
|
||||||
#
|
#
|
||||||
# These tests explicitly do #include "simdjson.cpp" so they can override stuff
|
# These tests explicitly do #include "simdjson.cpp" so they can override stuff
|
||||||
#
|
#
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
# All remaining tests link with simdjson proper
|
||||||
|
link_libraries(simdjson)
|
||||||
|
include_directories(..)
|
||||||
|
add_cpp_test(ondemand_basictests LABELS acceptance per_implementation)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue