TreeTypedJSONConverter.h
Go to the documentation of this file.
1#pragma once
2
3#include <stack>
4#include <utility>
5
6#include <SimoxUtility/json/json.hpp>
7
9
11{
13 {
14 public:
16 ~TreeTypedJSONConverter() override = default;
17
18 const nlohmann::json& getJSON();
19
20 MapElements getObjectElements(DataInput& elementData, TypeInput& elementType) override;
21
22 void visitObjectOnEnter(DataInput& elementData, TypeInput& elementType) override;
23 void visitObjectOnExit(DataInput& elementData, TypeInput& elementType) override;
24 void visitDictOnEnter(DataInput& elementData, TypeInput& elementType) override;
25 void visitDictOnExit(DataInput& elementData, TypeInput& elementType) override;
26 void visitPairOnEnter(DataInput& elementData, TypeInput& elementType) override;
27 void visitPairOnExit(DataInput& elementData, TypeInput& elementType) override;
28 void visitTupleOnEnter(DataInput& elementData, TypeInput& elementType) override;
29 void visitTupleOnExit(DataInput& elementData, TypeInput& elementType) override;
30 void visitListOnEnter(DataInput& elementData, TypeInput& elementType) override;
31 void visitListOnExit(DataInput& elementData, TypeInput& elementType) override;
32
33 void visitMatrix(DataInput& elementData, TypeInput& elementType) override;
34 void visitNDArray(DataInput& elementData, TypeInput& elementType) override;
35 void visitQuaternion(DataInput& elementData, TypeInput& elementType) override;
36 void visitImage(DataInput& elementData, TypeInput& elementType) override;
37 void visitPointCloud(DataInput& elementData, TypeInput& elementType) override;
38 void visitIntEnum(DataInput& elementData, TypeInput& elementType) override;
39 void visitInt(DataInput& elementData, TypeInput& elementType) override;
40 void visitLong(DataInput& elementData, TypeInput& elementType) override;
41 void visitFloat(DataInput& elementData, TypeInput& elementType) override;
42 void visitDouble(DataInput& elementData, TypeInput& elementType) override;
43 void visitBool(DataInput& elementData, TypeInput& elementType) override;
44 void visitString(DataInput& elementData, TypeInput& elementType) override;
45
46 private:
47 std::stack<std::pair<std::string, nlohmann::json>> jsonStack;
48
49 template <typename ElementType>
50 void insertIntoJSON(const std::string& key, const ElementType& data);
51 void insertNULLIntoJSON(const std::string& key);
52
53 static nlohmann::json handleGenericNDArray(const aron::data::NDArray& nd);
54 };
55} // namespace armarx::armem::gui::instance
void visitBool(DataInput &elementData, TypeInput &elementType) override
void visitNDArray(DataInput &elementData, TypeInput &elementType) override
void visitIntEnum(DataInput &elementData, TypeInput &elementType) override
void visitTupleOnEnter(DataInput &elementData, TypeInput &elementType) override
void visitPairOnExit(DataInput &elementData, TypeInput &elementType) override
void visitString(DataInput &elementData, TypeInput &elementType) override
void visitInt(DataInput &elementData, TypeInput &elementType) override
void visitDictOnExit(DataInput &elementData, TypeInput &elementType) override
void visitListOnEnter(DataInput &elementData, TypeInput &elementType) override
void visitObjectOnExit(DataInput &elementData, TypeInput &elementType) override
void visitPairOnEnter(DataInput &elementData, TypeInput &elementType) override
void visitQuaternion(DataInput &elementData, TypeInput &elementType) override
void visitImage(DataInput &elementData, TypeInput &elementType) override
void visitMatrix(DataInput &elementData, TypeInput &elementType) override
void visitTupleOnExit(DataInput &elementData, TypeInput &elementType) override
void visitDictOnEnter(DataInput &elementData, TypeInput &elementType) override
void visitObjectOnEnter(DataInput &elementData, TypeInput &elementType) override
void visitListOnExit(DataInput &elementData, TypeInput &elementType) override
MapElements getObjectElements(DataInput &elementData, TypeInput &elementType) override
void visitFloat(DataInput &elementData, TypeInput &elementType) override
void visitDouble(DataInput &elementData, TypeInput &elementType) override
void visitPointCloud(DataInput &elementData, TypeInput &elementType) override
void visitLong(DataInput &elementData, TypeInput &elementType) override
ElementTypes::ElementType ElementType
typename TypedVisitorBase< const data::VariantPtr, const type::VariantPtr >::TypeInput TypeInput
typename TypedVisitorBase< const data::VariantPtr, const type::VariantPtr >::DataInput DataInput
std::map< std::string, std::pair< DataInputNonConst, TypeInputNonConst > > MapElements