Commit 80df272f authored by gbalduzz's avatar gbalduzz
Browse files

fixed analysis input

parent d841ff47
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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:
+7 −4
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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();

+1 −0
Original line number Diff line number Diff line
@@ -5,3 +5,4 @@
        "project-onto-crystal-harmonics": true,
        "projection-cut-off-radius": 3.0
    }
}