forward declare every struct and union to be able to self-reference

This commit is contained in:
Jan 2021-02-20 03:30:00 +01:00
parent a2029da1d5
commit 60a689f58c
3 changed files with 5 additions and 1 deletions

View File

@ -48,6 +48,8 @@ void HeaderBlockStruct::OnOpen(HeaderParserState* state)
{ {
state->m_namespace.Push(m_type_name); state->m_namespace.Push(m_type_name);
} }
state->AddForwardDeclaration(std::make_unique<ForwardDeclaration>(m_namespace, m_type_name, DataDefinitionType::STRUCT));
} }
void HeaderBlockStruct::OnClose(HeaderParserState* state) void HeaderBlockStruct::OnClose(HeaderParserState* state)

View File

@ -48,6 +48,8 @@ void HeaderBlockUnion::OnOpen(HeaderParserState* state)
{ {
state->m_namespace.Push(m_type_name); state->m_namespace.Push(m_type_name);
} }
state->AddForwardDeclaration(std::make_unique<ForwardDeclaration>(m_namespace, m_type_name, DataDefinitionType::UNION));
} }
void HeaderBlockUnion::OnClose(HeaderParserState* state) void HeaderBlockUnion::OnClose(HeaderParserState* state)

View File

@ -61,7 +61,7 @@ void HeaderParserState::AddDataType(std::unique_ptr<DataDefinition> definition)
void HeaderParserState::AddForwardDeclaration(std::unique_ptr<ForwardDeclaration> forwardDeclaration) void HeaderParserState::AddForwardDeclaration(std::unique_ptr<ForwardDeclaration> forwardDeclaration)
{ {
m_forward_declarations.insert(std::make_pair(forwardDeclaration->m_name, std::move(forwardDeclaration))); m_forward_declarations.insert(std::make_pair(forwardDeclaration->GetFullName(), std::move(forwardDeclaration)));
} }
const DataDefinition* HeaderParserState::FindType(const std::string& typeName) const DataDefinition* HeaderParserState::FindType(const std::string& typeName)