Loading include/dca/io/json/json_reader.hpp +2 −2 Original line number Diff line number Diff line Loading @@ -30,8 +30,8 @@ public: void open_file(const std::string& filename); void close_file() noexcept; void open_group(const std::string& name) noexcept; void close_group(); bool open_group(const std::string& name) noexcept; bool close_group() noexcept; constexpr static bool is_reader = true; constexpr static bool is_writer = false; Loading include/dca/io/reader.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,8 @@ public: template <class... Args> bool execute(Args&&... args) noexcept { return std::visit([&](auto& var) -> bool { return var.execute(std::forward<Args>(args)...); }, reader_); return std::visit([&](auto& var) -> bool { return var.execute(std::forward<Args>(args)...); }, reader_); } private: Loading src/io/json/json_reader.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -44,23 +44,26 @@ void JSONReader::close_file() noexcept { open_groups_.pop(); } void JSONReader::open_group(const std::string& name) noexcept { bool JSONReader::open_group(const std::string& name) noexcept { details::JSONGroup* new_group = nullptr; if (open_groups_.top()) new_group = open_groups_.top()->getGroup(name); // TODO: process error here. // TODO maybe: process error here. // if (!new_group) // throw(std::logic_error("Group " + name + " does not exist")); open_groups_.push(new_group); return static_cast<bool>(new_group); } void JSONReader::close_group() { bool JSONReader::close_group() noexcept { if (open_groups_.size() == 1) { throw(std::logic_error("Can't close root group.")); // throw(std::logic_error("Can't close root group.")); return false; } open_groups_.pop(); return true; } } // namespace dca::io test/unit/io/json_reader_test.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -31,8 +31,8 @@ TEST(ReadTest, All) { EXPECT_DOUBLE_EQ(d, 3.1456); reader.execute("int", i); EXPECT_EQ(i, 42); EXPECT_THROW(reader.execute("not a field", i), std::logic_error); EXPECT_THROW(reader.execute("int", s), std::logic_error); EXPECT_FALSE(reader.execute("not a field", i)); EXPECT_FALSE(reader.execute("int", s)); EXPECT_EQ(i, 42); reader.close_group(); Loading test/unit/phys/parameters/analysis_parameters/input_read_all.json +1 −0 Original line number Diff line number Diff line Loading @@ -5,3 +5,4 @@ "project-onto-crystal-harmonics": true, "projection-cut-off-radius": 3.0 } } Loading
include/dca/io/json/json_reader.hpp +2 −2 Original line number Diff line number Diff line Loading @@ -30,8 +30,8 @@ public: void open_file(const std::string& filename); void close_file() noexcept; void open_group(const std::string& name) noexcept; void close_group(); bool open_group(const std::string& name) noexcept; bool close_group() noexcept; constexpr static bool is_reader = true; constexpr static bool is_writer = false; Loading
include/dca/io/reader.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -57,7 +57,8 @@ public: template <class... Args> bool execute(Args&&... args) noexcept { return std::visit([&](auto& var) -> bool { return var.execute(std::forward<Args>(args)...); }, reader_); return std::visit([&](auto& var) -> bool { return var.execute(std::forward<Args>(args)...); }, reader_); } private: Loading
src/io/json/json_reader.cpp +7 −4 Original line number Diff line number Diff line Loading @@ -44,23 +44,26 @@ void JSONReader::close_file() noexcept { open_groups_.pop(); } void JSONReader::open_group(const std::string& name) noexcept { bool JSONReader::open_group(const std::string& name) noexcept { details::JSONGroup* new_group = nullptr; if (open_groups_.top()) new_group = open_groups_.top()->getGroup(name); // TODO: process error here. // TODO maybe: process error here. // if (!new_group) // throw(std::logic_error("Group " + name + " does not exist")); open_groups_.push(new_group); return static_cast<bool>(new_group); } void JSONReader::close_group() { bool JSONReader::close_group() noexcept { if (open_groups_.size() == 1) { throw(std::logic_error("Can't close root group.")); // throw(std::logic_error("Can't close root group.")); return false; } open_groups_.pop(); return true; } } // namespace dca::io
test/unit/io/json_reader_test.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -31,8 +31,8 @@ TEST(ReadTest, All) { EXPECT_DOUBLE_EQ(d, 3.1456); reader.execute("int", i); EXPECT_EQ(i, 42); EXPECT_THROW(reader.execute("not a field", i), std::logic_error); EXPECT_THROW(reader.execute("int", s), std::logic_error); EXPECT_FALSE(reader.execute("not a field", i)); EXPECT_FALSE(reader.execute("int", s)); EXPECT_EQ(i, 42); reader.close_group(); Loading
test/unit/phys/parameters/analysis_parameters/input_read_all.json +1 −0 Original line number Diff line number Diff line Loading @@ -5,3 +5,4 @@ "project-onto-crystal-harmonics": true, "projection-cut-off-radius": 3.0 } }