helics 3.7.0
Loading...
Searching...
No Matches
JsonBuilder.hpp
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#pragma once
8#include <map>
9#include <memory>
10#include <nlohmann/json_fwd.hpp>
11#include <string>
12#include <utility>
13#include <vector>
14
15namespace helics::fileops {
16
19 private:
20 std::unique_ptr<nlohmann::json> jMap;
21 std::map<int, std::pair<std::string, int32_t>> missing_components;
22 int counterCode{0}; // a code for the user to include for various purposes
23 public:
24 JsonMapBuilder() noexcept;
26 JsonMapBuilder(JsonMapBuilder&& map) noexcept = default;
27 JsonMapBuilder& operator=(JsonMapBuilder&& map) = default;
29 nlohmann::json& getJValue();
31 bool isCompleted() const;
32 // check whether a map is currently completed or under construction
33 bool isActive() const { return static_cast<bool>(jMap); }
39 bool addComponent(const std::string& info, int index) noexcept;
42 int generatePlaceHolder(const std::string& location, int32_t code);
45 bool clearComponents(int32_t code);
48 bool clearComponents();
50 std::string generate();
52 void reset();
54 void setCounterCode(int code) { counterCode = code; }
55 int getCounterCode() const { return counterCode; }
56};
57
60 private:
61 std::unique_ptr<nlohmann::json> jMap;
62
63 public:
64 JsonBuilder() noexcept;
67 nlohmann::json& getJValue();
69 void addElement(const std::string& path, const std::string& value);
71 void addElement(const std::string& path, double value);
73 void addElement(const std::string& path, const std::vector<double>& value);
75 std::string generate();
77 void reset();
78};
79
80} // namespace helics::fileops
Definition JsonBuilder.hpp:59
void addElement(const std::string &path, const std::string &value)
Definition JsonBuilder.cpp:103
void reset()
Definition JsonBuilder.cpp:170
std::string generate()
Definition JsonBuilder.cpp:162
nlohmann::json & getJValue()
Definition JsonBuilder.cpp:154
Definition JsonBuilder.hpp:18
bool isCompleted() const
Definition JsonBuilder.cpp:33
void setCounterCode(int code)
Definition JsonBuilder.hpp:54
bool addComponent(const std::string &info, int index) noexcept
Definition JsonBuilder.cpp:45
int generatePlaceHolder(const std::string &location, int32_t code)
Definition JsonBuilder.cpp:38
bool clearComponents()
Definition JsonBuilder.cpp:79
std::string generate()
Definition JsonBuilder.cpp:85
nlohmann::json & getJValue()
Definition JsonBuilder.cpp:25
void reset()
Definition JsonBuilder.cpp:93