File indexing completed on 2024-06-16 04:23:17

0001 /*
0002     SPDX-FileCopyrightText: 2002-2005 Roberto Raggi <roberto@kdevelop.org>
0003     SPDX-FileCopyrightText: 2006 Adam Treat <treat@kde.org>
0004     SPDX-FileCopyrightText: 2006 Hamish Rodda <rodda@kde.org>
0005     SPDX-FileCopyrightText: 2007-2008 David Nolden <david.nolden.kdevelop@art-master.de>
0006 
0007     SPDX-License-Identifier: LGPL-2.0-only
0008 */
0009 
0010 #include "identifiedtype.h"
0011 #include "../declaration.h"
0012 #include "../duchainpointer.h"
0013 #include "../declarationid.h"
0014 #include <debug.h>
0015 
0016 namespace KDevelop {
0017 IdentifiedType::~IdentifiedType()
0018 {
0019 }
0020 
0021 void IdentifiedType::clear()
0022 {
0023     idData()->m_id = DeclarationId();
0024 }
0025 
0026 bool IdentifiedType::equals(const IdentifiedType* rhs) const
0027 {
0028     bool ret = false;
0029     if (idData()->m_id == rhs->idData()->m_id)
0030         ret = true;
0031 
0032     //qCDebug(LANGUAGE) << this << rhs << true;
0033     return ret;
0034 }
0035 
0036 // QualifiedIdentifier IdentifiedType::identifier() const
0037 // {
0038 //   return idData()->m_id ? idData()->m_iidData()->qualifiedIdentifier() : QualifiedIdentifier();
0039 // }
0040 
0041 QualifiedIdentifier IdentifiedType::qualifiedIdentifier() const
0042 {
0043     return idData()->m_id.qualifiedIdentifier();
0044 }
0045 
0046 uint IdentifiedType::hash() const
0047 {
0048     return idData()->m_id.hash();
0049 }
0050 
0051 DeclarationId IdentifiedType::declarationId() const
0052 {
0053     return idData()->m_id;
0054 }
0055 
0056 void IdentifiedType::setDeclarationId(const DeclarationId& id)
0057 {
0058     idData()->m_id = id;
0059 }
0060 
0061 Declaration* IdentifiedType::declaration(const TopDUContext* top) const
0062 {
0063     return idData()->m_id.declaration(top);
0064 }
0065 
0066 KDevelop::DUContext* IdentifiedType::internalContext(const KDevelop::TopDUContext* top) const
0067 {
0068     Declaration* decl = declaration(top);
0069     if (decl)
0070         return decl->internalContext();
0071     else
0072         return nullptr;
0073 }
0074 
0075 void IdentifiedType::setDeclaration(Declaration* declaration)
0076 {
0077     if (declaration)
0078         idData()->m_id = declaration->id();
0079     else
0080         idData()->m_id = DeclarationId();
0081 }
0082 
0083 // QString IdentifiedType::idMangled() const
0084 // {
0085 //   return identifier().mangled();
0086 // }
0087 }