#include "CreateMemberInformationPostProcessor.h" #include bool CreateMemberInformationPostProcessor::CreateMemberInformationForStructure(IDataRepository* repository, StructureInformation* structure) const { for(const auto& member : structure->m_definition->m_members) { StructureInformation* typeInfo = nullptr; const auto* currentDefinition = member->m_type_declaration->m_type; while(currentDefinition->GetType() == DataDefinitionType::TYPEDEF) { currentDefinition = dynamic_cast(currentDefinition)->m_type_declaration->m_type; } const auto* memberDefinition = dynamic_cast(currentDefinition); if(memberDefinition != nullptr) typeInfo = repository->GetInformationFor(memberDefinition); structure->m_ordered_members.emplace_back(std::make_unique(structure, typeInfo, member.get())); } return true; } bool CreateMemberInformationPostProcessor::PostProcess(IDataRepository* repository) { const auto& allStructureInformation = repository->GetAllStructureInformation(); return std::all_of(allStructureInformation.begin(), allStructureInformation.end(), [this, repository](StructureInformation* structure) { return CreateMemberInformationForStructure(repository, structure); }); }