helics  3.5.2
JsonBuilder.hpp
1 /*
2 Copyright (c) 2017-2024,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 #pragma once
8 #include <map>
9 #include <memory>
10 #include <string>
11 #include <utility>
12 #include <vector>
13 
14 namespace Json {
15 class Value;
16 } // namespace Json
17 
18 namespace helics::fileops {
21  private:
22  std::unique_ptr<Json::Value> jMap;
23  std::map<int, std::pair<std::string, int32_t>> missing_components;
24  int counterCode{0}; // a code for the user to include for various purposes
25  public:
26  JsonMapBuilder() noexcept;
27  ~JsonMapBuilder();
28  JsonMapBuilder(JsonMapBuilder&& map) noexcept = default;
29  JsonMapBuilder& operator=(JsonMapBuilder&& map) = default;
31  Json::Value& getJValue();
33  bool isCompleted() const;
34  // check whether a map is currently completed or under construction
35  bool isActive() const { return static_cast<bool>(jMap); }
41  bool addComponent(const std::string& info, int index) noexcept;
44  int generatePlaceHolder(const std::string& location, int32_t code);
47  bool clearComponents(int32_t code);
50  bool clearComponents();
52  std::string generate();
54  void reset();
56  void setCounterCode(int code) { counterCode = code; }
57  int getCounterCode() const { return counterCode; }
58 };
59 
61 class JsonBuilder {
62  private:
63  std::unique_ptr<Json::Value> jMap;
64 
65  public:
66  JsonBuilder() noexcept;
67  ~JsonBuilder();
69  Json::Value& getJValue();
71  void addElement(const std::string& path, const std::string& value);
73  void addElement(const std::string& path, double value);
75  void addElement(const std::string& path, const std::vector<double>& value);
77  std::string generate();
79  void reset();
80 };
81 } // namespace helics::fileops
Definition: JsonBuilder.hpp:61
void addElement(const std::string &path, const std::string &value)
Definition: JsonBuilder.cpp:100
void reset()
Definition: JsonBuilder.cpp:167
std::string generate()
Definition: JsonBuilder.cpp:159
Json::Value & getJValue()
Definition: JsonBuilder.cpp:151
Definition: JsonBuilder.hpp:20
bool isCompleted() const
Definition: JsonBuilder.cpp:30
void setCounterCode(int code)
Definition: JsonBuilder.hpp:56
bool addComponent(const std::string &info, int index) noexcept
Definition: JsonBuilder.cpp:42
int generatePlaceHolder(const std::string &location, int32_t code)
Definition: JsonBuilder.cpp:35
Json::Value & getJValue()
Definition: JsonBuilder.cpp:22
bool clearComponents()
Definition: JsonBuilder.cpp:76
std::string generate()
Definition: JsonBuilder.cpp:82
void reset()
Definition: JsonBuilder.cpp:90