106 lines
2.4 KiB
C++
106 lines
2.4 KiB
C++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "LogViewXdrStruct.hpp"
|
|
#include "LogViewXdrValue.hpp"
|
|
#include "LogViewXdrType.hpp"
|
|
|
|
namespace N_LogView
|
|
{
|
|
|
|
|
|
LogViewXdrStruct::LogViewXdrStruct(const QString& a_name, const LogViewXdrElement::E_ElementKind a_kind, uint16_t enumSize)
|
|
: LogViewXdrElement(a_name, a_kind, "LogViewXdrStruct")
|
|
, m_EnumSize(enumSize)
|
|
{
|
|
}
|
|
|
|
LogViewXdrStruct::~LogViewXdrStruct()
|
|
{
|
|
for (auto ptr : m_ChildList)
|
|
delete ptr;
|
|
}
|
|
|
|
|
|
|
|
void LogViewXdrStruct::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, const int16_t a_lastBit, const bool a_isLast)
|
|
{
|
|
m_ChildList.push_back(new LogViewXdrType(a_name, a_type, a_arraySize, a_dynArrayOffset, a_kind, a_firstBit, a_lastBit, a_isLast));
|
|
}
|
|
|
|
|
|
void LogViewXdrStruct::addElement(const QString& a_name, const uint32_t a_value, const E_ElementKind a_kind)
|
|
{
|
|
m_ChildList.push_back(new LogViewXdrValue(a_name, a_value, a_kind));
|
|
}
|
|
|
|
|
|
|
|
LogViewXdrElement* LogViewXdrStruct::getChild(const uint32_t a_childIndex) const
|
|
{
|
|
if (m_ChildList.size() > a_childIndex)
|
|
return m_ChildList[a_childIndex];
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
|
|
|
|
LogViewXdrType* LogViewXdrStruct::getChildAsType(const uint32_t a_childIndex) const
|
|
{
|
|
return static_cast<LogViewXdrType*>(getChild(a_childIndex));
|
|
}
|
|
|
|
|
|
|
|
LogViewXdrValue* LogViewXdrStruct::getChildAsValue(const uint32_t a_childIndex) const
|
|
{
|
|
return static_cast<LogViewXdrValue*>(getChild(a_childIndex));
|
|
}
|
|
|
|
|
|
|
|
void LogViewXdrStruct::dump() const
|
|
{
|
|
INFO_LOG(m_logger) << "Element[" << getName().toStdString() << "]: kind=" << getKindName().toStdString() << " enumSize=" << getEnumSize();
|
|
INFO_LOG(m_logger) << "-------------- childs start -----------------";
|
|
|
|
std::vector<LogViewXdrElement*>::const_iterator iter = m_ChildList.begin();
|
|
while (iter != m_ChildList.end())
|
|
{
|
|
(*iter)->dump();
|
|
++iter;
|
|
}
|
|
INFO_LOG(m_logger) << "-------------- childs end -----------------";
|
|
}
|
|
|
|
|
|
uint32_t LogViewXdrStruct::getChildValue(const QString& a_name, bool* a_error) const
|
|
{
|
|
if (a_error)
|
|
*a_error = false;
|
|
std::vector<LogViewXdrElement*>::const_iterator iter = m_ChildList.begin();
|
|
while (iter != m_ChildList.end())
|
|
{
|
|
if ((*iter)->getName() == a_name)
|
|
return static_cast<const LogViewXdrValue*>(*iter)->getValue();
|
|
++iter;
|
|
}
|
|
if (a_error)
|
|
*a_error = true;
|
|
return 0;
|
|
}
|
|
|
|
}
|
|
|