From ced679b2319e56e6ac593214bdf1bd099a256051 Mon Sep 17 00:00:00 2001 From: Daniel Parker Date: Mon, 10 Mar 2025 18:39:57 -0400 Subject: [PATCH] csv cursor --- include/jsoncons/decode_traits.hpp | 16 ++++++++-------- include/jsoncons_ext/csv/csv_cursor.hpp | 5 +++-- test/csv/src/csv_cursor_tests.cpp | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/include/jsoncons/decode_traits.hpp b/include/jsoncons/decode_traits.hpp index 30275eb2c..172e652d0 100644 --- a/include/jsoncons/decode_traits.hpp +++ b/include/jsoncons/decode_traits.hpp @@ -190,8 +190,8 @@ namespace jsoncons { { v.push_back(decode_traits::decode(cursor, decoder, ec)); if (ec) {return T{};} - std::cout << "read next 10\n"; - //cursor.next(ec); + //std::cout << "read next 10\n"; + cursor.next(ec); } return v; } @@ -480,7 +480,7 @@ namespace jsoncons { { v.insert(decode_traits::decode(cursor, decoder, ec)); if (ec) {return T{};} - std::cout << "cursor.next 20\n"; + //std::cout << "cursor.next 20\n"; cursor.next(ec); if (ec) {return T{};} } @@ -527,7 +527,7 @@ namespace jsoncons { { v[i] = decode_traits::decode(cursor, decoder, ec); if (ec) {return v;} - std::cout << "cursor.next 100\n"; + //std::cout << "cursor.next 100\n"; cursor.next(ec); if (ec) {return v;} } @@ -574,12 +574,12 @@ namespace jsoncons { } auto key = cursor.current().template get(ec); if (ec) {return val;} - std::cout << "cursor.next 200\n"; + //std::cout << "cursor.next 200\n"; cursor.next(ec); if (ec) {return val;} val.emplace(std::move(key),decode_traits::decode(cursor, decoder, ec)); if (ec) {return val;} - std::cout << "cursor.next 300\n"; + //std::cout << "cursor.next 300\n"; cursor.next(ec); if (ec) {return val;} } @@ -640,12 +640,12 @@ namespace jsoncons { ec = json_errc::invalid_number; return val; } - std::cout << "cursor.next 500\n"; + //std::cout << "cursor.next 500\n"; cursor.next(ec); if (ec) {return val;} val.emplace(n, decode_traits::decode(cursor, decoder, ec)); if (ec) {return val;} - std::cout << "cursor.next 600\n"; + //std::cout << "cursor.next 600\n"; cursor.next(ec); if (ec) {return val;} } diff --git a/include/jsoncons_ext/csv/csv_cursor.hpp b/include/jsoncons_ext/csv/csv_cursor.hpp index 391aa8d02..0f5b614f2 100644 --- a/include/jsoncons_ext/csv/csv_cursor.hpp +++ b/include/jsoncons_ext/csv/csv_cursor.hpp @@ -225,10 +225,11 @@ class basic_csv_cursor : public basic_staj_cursor, private virtual ser_co void read_to(basic_json_visitor& visitor, std::error_code& ec) override { + basic_json_tee tee(cursor_visitor_, visitor); if (cursor_visitor_.event().send_json_event(visitor, *this, ec)) { - read_next(visitor, ec); - read_next(ec); + read_next(tee, ec); + //read_next(ec); } } diff --git a/test/csv/src/csv_cursor_tests.cpp b/test/csv/src/csv_cursor_tests.cpp index c97cbc836..cfffe7e70 100644 --- a/test/csv/src/csv_cursor_tests.cpp +++ b/test/csv/src/csv_cursor_tests.cpp @@ -144,8 +144,8 @@ EUR_LIBOR_06M,2015-10-27,0.0000001 REQUIRE(cursor.current().event_type() == staj_event_type::begin_object); cursor.read_to(decoder); - //REQUIRE(cursor.current().event_type() == staj_event_type::end_object); - //cursor.next(); + REQUIRE(cursor.current().event_type() == staj_event_type::end_object); + cursor.next(); REQUIRE(cursor.current().event_type() == staj_event_type::begin_object); cursor.next();