diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-01-08 21:57:49 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-01-13 16:57:33 +0000 |
commit | 85f5bc5859b011cec1b6df56ac2fa09f1f06a26f (patch) | |
tree | 2910f0d7b7729835cfbcc09cc8a191fbec97683b | |
parent | dd15e8e1990c818e7017fff8566941ba8cc9b0e6 (diff) |
shiboken6: Move TemplateInstance/TemplateEntry members into type system parser
These type system elements cannot be nested, so, there is no need
to have them in a stack.
Task-number: PYSIDE-1766
Change-Id: I4c51a4a9d5dc20eb528086a7fa6108fada6b0a9b
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
(cherry picked from commit ebd6f9fca7d7fd3390f48159b6c4c860ac823381)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | sources/shiboken6/ApiExtractor/typesystemparser.cpp | 44 | ||||
-rw-r--r-- | sources/shiboken6/ApiExtractor/typesystemparser.h | 5 |
2 files changed, 20 insertions, 29 deletions
diff --git a/sources/shiboken6/ApiExtractor/typesystemparser.cpp b/sources/shiboken6/ApiExtractor/typesystemparser.cpp index 67afc649e..29a42c2cb 100644 --- a/sources/shiboken6/ApiExtractor/typesystemparser.cpp +++ b/sources/shiboken6/ApiExtractor/typesystemparser.cpp @@ -892,7 +892,8 @@ bool TypeSystemParser::endElement(QStringView localName) m_currentEnum = nullptr; break; case StackElement::Template: - m_database->addTemplate(m_current->templateEntry); + m_database->addTemplate(m_templateEntry); + m_templateEntry = nullptr; break; case StackElement::InsertTemplate: switch (m_current->parent->type) { @@ -900,37 +901,29 @@ bool TypeSystemParser::endElement(QStringView localName) if (m_current->parent->parent->type == StackElement::Root) { CodeSnipList snips = m_current->parent->entry->codeSnips(); CodeSnip snip = snips.takeLast(); - TemplateInstancePtr ti(m_current->templateInstance); - snip.addTemplateInstance(ti); + snip.addTemplateInstance(m_templateInstance); snips.append(snip); m_current->parent->entry->setCodeSnips(snips); break; } Q_FALLTHROUGH(); case StackElement::NativeToTarget: - case StackElement::AddConversion: { - TemplateInstancePtr ti(m_current->templateInstance); - m_contextStack.top()->codeSnips.last().addTemplateInstance(ti); - } + case StackElement::AddConversion: + m_contextStack.top()->codeSnips.last().addTemplateInstance(m_templateInstance); break; - case StackElement::Template: { - TemplateInstancePtr ti(m_current->templateInstance); - m_current->parent->templateEntry->addTemplateInstance(ti); - } + case StackElement::Template: + m_templateEntry->addTemplateInstance(m_templateInstance); break; - case StackElement::ConversionRule: { - TemplateInstancePtr ti(m_current->templateInstance); - m_contextStack.top()->functionMods.last().argument_mods().last().conversionRules().last().addTemplateInstance(ti); - } + case StackElement::ConversionRule: + m_contextStack.top()->functionMods.last().argument_mods().last().conversionRules().last().addTemplateInstance(m_templateInstance); break; - case StackElement::InjectCodeInFunction: { - TemplateInstancePtr ti(m_current->templateInstance); - m_contextStack.top()->functionMods.last().snips().last().addTemplateInstance(ti); - } + case StackElement::InjectCodeInFunction: + m_contextStack.top()->functionMods.last().snips().last().addTemplateInstance(m_templateInstance); break; default: break; // nada } + m_templateInstance.reset(); break; default: break; @@ -965,7 +958,7 @@ bool TypeSystemParser::characters(const String &ch) return true; if (m_current->type == StackElement::Template) { - m_current->templateEntry->addCode(ch); + m_templateEntry->addCode(ch); return true; } @@ -2794,7 +2787,7 @@ TemplateInstance * bool TypeSystemParser::parseReplace(const ConditionalStreamReader &, const StackElement &topElement, - StackElement *element, QXmlStreamAttributes *attributes) + StackElement *, QXmlStreamAttributes *attributes) { if (topElement.type != StackElement::InsertTemplate) { m_error = QLatin1String("Can only insert replace rules into insert-template."); @@ -2809,7 +2802,7 @@ bool TypeSystemParser::parseReplace(const ConditionalStreamReader &, else if (name == toAttribute()) to = attributes->takeAt(i).value().toString(); } - element->parent->templateInstance->addReplaceRule(from, to); + m_templateInstance->addReplaceRule(from, to); return true; } @@ -3241,14 +3234,13 @@ bool TypeSystemParser::startElement(const ConditionalStreamReader &reader) m_error = msgMissingAttribute(nameAttribute()); return false; } - element->templateEntry = + m_templateEntry = new TemplateEntry(attributes.takeAt(nameIndex).value().toString()); } break; case StackElement::InsertTemplate: - element->templateInstance = - parseInsertTemplate(reader, topElement, &attributes); - if (!element->templateInstance) + m_templateInstance.reset(parseInsertTemplate(reader, topElement, &attributes)); + if (m_templateInstance.isNull()) return false; break; case StackElement::Replace: diff --git a/sources/shiboken6/ApiExtractor/typesystemparser.h b/sources/shiboken6/ApiExtractor/typesystemparser.h index 62b0aeb0c..36bff8f21 100644 --- a/sources/shiboken6/ApiExtractor/typesystemparser.h +++ b/sources/shiboken6/ApiExtractor/typesystemparser.h @@ -126,9 +126,6 @@ class StackElement TypeEntry* entry; ElementType type; StackElement *parent; - - TemplateInstance *templateInstance = nullptr; - TemplateEntry *templateEntry = nullptr; }; struct StackElementContext @@ -269,6 +266,8 @@ private: const TypeEntry::CodeGeneration m_generate; EnumTypeEntry* m_currentEnum = nullptr; + TemplateInstancePtr m_templateInstance; + TemplateEntry *m_templateEntry = nullptr; QStack<StackElementContext*> m_contextStack; QString m_currentSignature; |