#pragma once #include #include "LogViewXdrElement.hpp" #include namespace N_LogView { class LogViewXdrValue; } namespace N_LogView { class LogViewXdrType; } namespace N_LogView { class LogViewXdrStruct final : public LogViewXdrElement { public: LogViewXdrStruct(const QString& a_name, const LogViewXdrElement::E_ElementKind a_kind, uint16_t enumSize = 0); ~LogViewXdrStruct(); void addElement(const QString& a_name, const QString& a_type, const uint16_t a_arraySize, const uint16_t a_dynArrayOffset, const E_ElementKind a_kind, const int16_t a_firstBit = -1, const int16_t a_lastBit = -1, const bool a_isLast = true); void addElement(const QString& a_name, const uint32_t a_value, const E_ElementKind a_kind); LogViewXdrElement* getChild(const uint32_t a_childIndex) const; LogViewXdrType* getChildAsType(const uint32_t a_childIndex) const; LogViewXdrValue* getChildAsValue(const uint32_t a_childIndex) const; void dump() const override; uint32_t getChildValue(const QString& a_name, bool* a_error = nullptr) const; uint16_t getEnumSize() const { return m_EnumSize; } protected: uint16_t m_EnumSize; std::vector m_ChildList; }; }