// ************************************************************************** // // (C) Copyright 2009 Swiss SIMTEC AG // // ************************************************************************** // // $HeadURL$ // $LastChangedBy$ // $LastChangedDate$ // $LastChangedRevision$ // // ************************************************************************** #pragma once #include #include "LogViewXdrElement.hpp" #include // forward declarations from stereotyped includes namespace N_LogView { class LogViewXdrValue; } namespace N_LogView { class LogViewXdrType; } namespace N_LogView { /** * This class represents elements which have childs. * This are enum and struct. * @author alois.wismer * @version 1.0 * @created 31-Mrz-2010 11:59:19 */ 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; }; }