Changeset View
Changeset View
Standalone View
Standalone View
duchain/navigation/declarationnavigationcontext.cpp
Show All 40 Lines | |||||
41 | 41 | | |||
42 | DeclarationNavigationContext::DeclarationNavigationContext(DeclarationPointer decl, KDevelop::TopDUContextPointer topContext, AbstractNavigationContext* previousContext) | 42 | DeclarationNavigationContext::DeclarationNavigationContext(DeclarationPointer decl, KDevelop::TopDUContextPointer topContext, AbstractNavigationContext* previousContext) | ||
43 | : AbstractDeclarationNavigationContext(decl, topContext, previousContext) | 43 | : AbstractDeclarationNavigationContext(decl, topContext, previousContext) | ||
44 | { | 44 | { | ||
45 | } | 45 | } | ||
46 | 46 | | |||
47 | NavigationContextPointer DeclarationNavigationContext::registerChild(DeclarationPointer declaration) | 47 | NavigationContextPointer DeclarationNavigationContext::registerChild(DeclarationPointer declaration) | ||
48 | { | 48 | { | ||
49 | return AbstractDeclarationNavigationContext::registerChild(new DeclarationNavigationContext(declaration, m_topContext, this)); | 49 | return AbstractDeclarationNavigationContext::registerChild(new DeclarationNavigationContext(declaration, topContext(), this)); | ||
50 | } | 50 | } | ||
51 | 51 | | |||
52 | void DeclarationNavigationContext::htmlClass() | 52 | void DeclarationNavigationContext::htmlClass() | ||
53 | { | 53 | { | ||
54 | StructureType::Ptr klass = m_declaration->abstractType().cast<StructureType>(); | 54 | StructureType::Ptr klass = declaration()->abstractType().cast<StructureType>(); | ||
55 | Q_ASSERT(klass); | 55 | Q_ASSERT(klass); | ||
56 | ClassDeclaration* classDecl = dynamic_cast<ClassDeclaration*>(klass->declaration(m_topContext.data())); | 56 | ClassDeclaration* classDecl = dynamic_cast<ClassDeclaration*>(klass->declaration(topContext().data())); | ||
57 | if (classDecl) { | 57 | if (classDecl) { | ||
58 | // write class modifier | 58 | // write class modifier | ||
59 | switch (classDecl->classModifier()) { | 59 | switch (classDecl->classModifier()) { | ||
60 | case ClassDeclarationData::Abstract: | 60 | case ClassDeclarationData::Abstract: | ||
61 | modifyHtml() += QStringLiteral("abstract "); | 61 | modifyHtml() += QStringLiteral("abstract "); | ||
62 | break; | 62 | break; | ||
63 | case ClassDeclarationData::Final: | 63 | case ClassDeclarationData::Final: | ||
64 | modifyHtml() += QStringLiteral("final "); | 64 | modifyHtml() += QStringLiteral("final "); | ||
65 | break; | 65 | break; | ||
66 | default: | 66 | default: | ||
67 | //nothing | 67 | //nothing | ||
68 | break; | 68 | break; | ||
69 | } | 69 | } | ||
70 | // write class type | 70 | // write class type | ||
71 | if (classDecl->classType() == ClassDeclarationData::Interface) { | 71 | if (classDecl->classType() == ClassDeclarationData::Interface) { | ||
72 | modifyHtml() += QStringLiteral("interface "); | 72 | modifyHtml() += QStringLiteral("interface "); | ||
73 | } else if (classDecl->classType() == ClassDeclarationData::Trait) { | 73 | } else if (classDecl->classType() == ClassDeclarationData::Trait) { | ||
74 | modifyHtml() += QStringLiteral("trait "); | 74 | modifyHtml() += QStringLiteral("trait "); | ||
75 | } else { | 75 | } else { | ||
76 | modifyHtml() += QStringLiteral("class "); | 76 | modifyHtml() += QStringLiteral("class "); | ||
77 | } | 77 | } | ||
78 | // write class identifier | 78 | // write class identifier | ||
79 | eventuallyMakeTypeLinks(m_declaration->abstractType()); | 79 | eventuallyMakeTypeLinks(declaration()->abstractType()); | ||
80 | // write inheritance | 80 | // write inheritance | ||
81 | if (classDecl->baseClassesSize() > 0) { | 81 | if (classDecl->baseClassesSize() > 0) { | ||
82 | AbstractType::Ptr extends; | 82 | AbstractType::Ptr extends; | ||
83 | QList<AbstractType::Ptr> implements; | 83 | QList<AbstractType::Ptr> implements; | ||
84 | FOREACH_FUNCTION(const BaseClassInstance& base, classDecl->baseClasses) { | 84 | FOREACH_FUNCTION(const BaseClassInstance& base, classDecl->baseClasses) { | ||
85 | StructureType::Ptr stype = base.baseClass.type<StructureType>(); | 85 | StructureType::Ptr stype = base.baseClass.type<StructureType>(); | ||
86 | if (stype) { | 86 | if (stype) { | ||
87 | ClassDeclaration *classDecl = dynamic_cast<ClassDeclaration*>(stype->declaration(m_topContext.data())); | 87 | ClassDeclaration *classDecl = dynamic_cast<ClassDeclaration*>(stype->declaration(topContext().data())); | ||
88 | if (classDecl) { | 88 | if (classDecl) { | ||
89 | if (classDecl->classType() == ClassDeclarationData::Interface) { | 89 | if (classDecl->classType() == ClassDeclarationData::Interface) { | ||
90 | implements.append(base.baseClass.abstractType()); | 90 | implements.append(base.baseClass.abstractType()); | ||
91 | } else { | 91 | } else { | ||
92 | extends = base.baseClass.abstractType(); | 92 | extends = base.baseClass.abstractType(); | ||
93 | } | 93 | } | ||
94 | } | 94 | } | ||
95 | } | 95 | } | ||
Show All 18 Lines | |||||
114 | } | 114 | } | ||
115 | } | 115 | } | ||
116 | modifyHtml() += QStringLiteral(" "); | 116 | modifyHtml() += QStringLiteral(" "); | ||
117 | } | 117 | } | ||
118 | } | 118 | } | ||
119 | 119 | | |||
120 | void DeclarationNavigationContext::htmlAdditionalNavigation() | 120 | void DeclarationNavigationContext::htmlAdditionalNavigation() | ||
121 | { | 121 | { | ||
122 | if (auto member = dynamic_cast<TraitMethodAliasDeclaration*>(m_declaration.data())) { | 122 | if (auto member = dynamic_cast<TraitMethodAliasDeclaration*>(declaration().data())) { | ||
123 | Declaration *dec = member->aliasedDeclaration().data(); | 123 | Declaration *dec = member->aliasedDeclaration().data(); | ||
124 | if (dec && dec->context() && dec->context()->owner()) { | 124 | if (dec && dec->context() && dec->context()->owner()) { | ||
125 | modifyHtml() += i18n("Use of %1 from %2<br />") | 125 | modifyHtml() += i18n("Use of %1 from %2<br />") | ||
126 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec)).toString(), | 126 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec)).toString(), | ||
127 | QStringLiteral("jump_to_used"), | 127 | QStringLiteral("jump_to_used"), | ||
128 | NavigationAction(DeclarationPointer(dec), | 128 | NavigationAction(DeclarationPointer(dec), | ||
129 | KDevelop::NavigationAction::NavigateDeclaration))) | 129 | KDevelop::NavigationAction::NavigateDeclaration))) | ||
130 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec->context()->owner())).toString(), | 130 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec->context()->owner())).toString(), | ||
131 | QStringLiteral("jump_to_used_container"), | 131 | QStringLiteral("jump_to_used_container"), | ||
132 | NavigationAction(DeclarationPointer(dec->context()->owner()), | 132 | NavigationAction(DeclarationPointer(dec->context()->owner()), | ||
133 | KDevelop::NavigationAction::NavigateDeclaration))); | 133 | KDevelop::NavigationAction::NavigateDeclaration))); | ||
134 | } | 134 | } | ||
135 | } else if (auto member = dynamic_cast<TraitMemberAliasDeclaration*>(m_declaration.data())) { | 135 | } else if (auto member = dynamic_cast<TraitMemberAliasDeclaration*>(declaration().data())) { | ||
136 | Declaration *dec = member->aliasedDeclaration().data(); | 136 | Declaration *dec = member->aliasedDeclaration().data(); | ||
137 | if (dec && dec->context() && dec->context()->owner()) { | 137 | if (dec && dec->context() && dec->context()->owner()) { | ||
138 | modifyHtml() += i18n("Use of %1 from %2<br />") | 138 | modifyHtml() += i18n("Use of %1 from %2<br />") | ||
139 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec)).toString(), | 139 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec)).toString(), | ||
140 | QStringLiteral("jump_to_used"), | 140 | QStringLiteral("jump_to_used"), | ||
141 | NavigationAction(DeclarationPointer(dec), | 141 | NavigationAction(DeclarationPointer(dec), | ||
142 | KDevelop::NavigationAction::NavigateDeclaration))) | 142 | KDevelop::NavigationAction::NavigateDeclaration))) | ||
143 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec->context()->owner())).toString(), | 143 | .arg(createLink(prettyQualifiedIdentifier(DeclarationPointer(dec->context()->owner())).toString(), | ||
Show All 35 Lines |