PLCnext API Documentation 25.0.2.69
JsonWriter.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/System/Core/PimplPtr.hxx"
9#include "Arp/System/Commons/Exceptions/JsonException.hpp"
10
11namespace Arp { namespace System { namespace Commons { namespace Json
12{
13
15
17class ARP_CXX_SYMBOL_EXPORT JsonWriter
18{
19public: // Impl forward declaration
20 class Impl;
21
22public: // usings
23
24public: // construction/destruction/assignment
26 JsonWriter(const JsonWriter& arg) = delete;
27 JsonWriter(JsonWriter&& arg)noexcept;
28 JsonWriter& operator=(const JsonWriter& arg) = delete;
31
32public: // static operations
33 static JsonWriter Create(const String& filename);
34 static bool TryCreate(const String& filename, JsonWriter& writer);
35
36public: // setter/getter operations
37 void SetPrettyPrint(bool state);
38
39public: // operations
40 void SaveDocument(void)const;
41 bool TrySaveDocument(void) const;
42
43 String SaveToText(void)const;
44 bool TrySaveToText(String& text) const;
45
46 // object
47 void WriteRootObject(void);
48 bool TryWriteRootObject(void);
49 void WriteStartObject(const char* objectName);
50 bool TryWriteStartObject(const char* objectName);
51 void WriteEndObject(void);
52 bool TryWriteEndObject(void);
53
54 // complex array
55 void WriteRootComplexArray(void);
56 bool TryWriteRootComplexArray(void);
57 void WriteStartComplexArray(const char* arrayName);
58 bool TryWriteStartComplexArray(const char* arrayName);
59 void WriteEndComplexArray(void);
60 bool TryWriteEndComplexArray(void);
61
62 // complex array item
63 void WriteStartComplexArrayItem(void);
64 bool TryWriteStartComplexArrayItem(void);
65 void WriteEndComplexArrayItem(void);
66 bool TryWriteEndComplexArrayItem(void);
67
68 // write simple values
69 void WriteValue(const char* valueName, const bool& value);
70 void WriteValue(const char* valueName, const uint8& value);
71 void WriteValue(const char* valueName, const int8& value);
72 void WriteValue(const char* valueName, const uint16& value);
73 void WriteValue(const char* valueName, const int16& value);
74 void WriteValue(const char* valueName, const uint32& value);
75 void WriteValue(const char* valueName, const int32& value);
76 void WriteValue(const char* valueName, const uint64& value);
77 void WriteValue(const char* valueName, const int64& value);
78 void WriteValue(const char* valueName, const float32& value);
79 void WriteValue(const char* valueName, const float64& value);
80 void WriteValue(const char* valueName, std::nullptr_t value);
81 void WriteValue(const char* valueName, const String& value);
82 void WriteValue(const char* valueName, const char* value);
83 void WriteValue(const char* valueName, const char* pBuffer, size_t bufferSize);
84
85 // write simple array values
86 void WriteSimpleArray(const char* arrayName, const std::vector<bool>& values);
87 void WriteSimpleArray(const char* arrayName, const std::vector<String>& values);
88 void WriteSimpleArray(const char* arrayName, const std::vector<uint8>& values);
89 void WriteSimpleArray(const char* arrayName, const std::vector<int8>& values);
90 void WriteSimpleArray(const char* arrayName, const std::vector<uint16>& values);
91 void WriteSimpleArray(const char* arrayName, const std::vector<int16>& values);
92 void WriteSimpleArray(const char* arrayName, const std::vector<uint32>& values);
93 void WriteSimpleArray(const char* arrayName, const std::vector<int32>& values);
94 void WriteSimpleArray(const char* arrayName, const std::vector<uint64>& values);
95 void WriteSimpleArray(const char* arrayName, const std::vector<int64>& values);
96 void WriteSimpleArray(const char* arrayName, const std::vector<float32>& values);
97 void WriteSimpleArray(const char* arrayName, const std::vector<float64>& values);
98
99public: // Impl operations
100 Impl& GetImpl(void);
101 const Impl& GetImpl(void)const;
102
103private: // Impl usings
104 using Pimpl = PimplPtr<Impl>;
105
106private: // Impl fields
107 Pimpl pimpl;
108};
109
111// inline methods of class JsonWriter
112
113}}}} // end of namespace Arp::System::Commons::Json
Adapter class to implement PImpl idiom.
Definition: PimplPtr.hxx:15
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
This exception is used for Json parsing errors.
Definition: JsonException.hpp:15
Class to write a Json file
Definition: JsonWriter.hpp:18
JsonWriter & operator=(JsonWriter &&arg) noexcept
Default move-assignment operator.
JsonWriter(JsonWriter &&arg) noexcept
Default move constructor.
JsonWriter(void)
Default constructor.
~JsonWriter(void)
Default destructor.
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:33
float float32
The Arp floating point numbers type of 4 byte size.
Definition: PrimitiveTypes.hpp:41
std::int16_t int16
The Arp integer type of 2 byte size.
Definition: PrimitiveTypes.hpp:31
std::uint8_t uint8
The Arp unsigned integer type of 1 byte size.
Definition: PrimitiveTypes.hpp:25
std::uint16_t uint16
The Arp unsigned integer type of 2 byte size.
Definition: PrimitiveTypes.hpp:29
std::int64_t int64
The Arp integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:39
std::int32_t int32
The Arp integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:35
std::int8_t int8
The Arp integer type of 1 byte size.
Definition: PrimitiveTypes.hpp:27
std::uint64_t uint64
The Arp unsigned integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:37
double float64
The Arp floating point numbers type of 8 byte size.
Definition: PrimitiveTypes.hpp:43
@ Create
Creates a new file. If the file already exists, it is overwritten.
@ WriteValue
Writing values of objects.
Root namespace for the PLCnext API