| #pragma once |
| |
| #include "bej_decoder_core.h" |
| #include "rde_common.h" |
| |
| #include <span> |
| #include <string> |
| #include <vector> |
| |
| namespace libbej |
| { |
| |
| /** |
| * @brief Class for decoding RDE BEJ to a JSON output. |
| */ |
| class BejDecoderJson |
| { |
| |
| public: |
| /** |
| * @brief Decode the encoded PLDM block. |
| * |
| * @param[in] dictionaries - dictionaries needed for decoding. |
| * @param[in] encodedPldmBlock - encoded PLDM block. |
| * @return 0 if successful. |
| */ |
| int decode(const BejDictionaries& dictionaries, |
| const std::span<const uint8_t> encodedPldmBlock); |
| |
| /** |
| * @brief Get the JSON output related to the latest call to decode. |
| * |
| * @return std::string containing a JSON. If the decoding was |
| * unsuccessful, this might contain partial data (invalid JSON). |
| */ |
| std::string getOutput(); |
| |
| private: |
| bool isPrevAnnotated; |
| std::string output; |
| std::vector<BejStackProperty> stack; |
| }; |
| |
| } // namespace libbej |