File indexing completed on 2024-04-28 15:52:49
0001 /* 0002 SPDX-FileCopyrightText: 2009 Milian Wolff <mail@milianw.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "integraltypeextended.h" 0008 0009 #include <language/duchain/types/typeregister.h> 0010 0011 using namespace KDevelop; 0012 0013 namespace Php 0014 { 0015 0016 REGISTER_TYPE(IntegralTypeExtended); 0017 0018 IntegralTypeExtended::IntegralTypeExtended(const IntegralTypeExtended& rhs) 0019 : IntegralType(copyData<IntegralTypeExtended>(*rhs.d_func())) 0020 { 0021 } 0022 0023 IntegralTypeExtended::IntegralTypeExtended(IntegralTypeExtendedData& data) 0024 : IntegralType(data) 0025 { 0026 } 0027 0028 IntegralTypeExtended::IntegralTypeExtended(uint type) 0029 : IntegralType(createData<IntegralTypeExtended>()) 0030 { 0031 setDataType(type); 0032 setModifiers(ConstModifier); 0033 } 0034 0035 0036 QString IntegralTypeExtended::toString() const 0037 { 0038 if ( d_func()->m_dataType == TypeResource ) { 0039 return QStringLiteral("resource"); 0040 } else if (d_func()->m_dataType == TypeCallable) { 0041 return QStringLiteral("callable"); 0042 } else if (d_func()->m_dataType == TypeObject) { 0043 return QStringLiteral("object"); 0044 } 0045 return KDevelop::IntegralType::toString(); 0046 } 0047 0048 KDevelop::AbstractType* IntegralTypeExtended::clone() const 0049 { 0050 return new IntegralTypeExtended(*this); 0051 } 0052 0053 uint IntegralTypeExtended::hash() const 0054 { 0055 return 4 * KDevelop::IntegralType::hash(); 0056 } 0057 0058 bool IntegralTypeExtended::equals(const KDevelop::AbstractType* rhs) const 0059 { 0060 if( this == rhs ) { 0061 return true; 0062 } 0063 0064 if ( !IntegralType::equals(rhs) ) { 0065 return false; 0066 } 0067 0068 Q_ASSERT( dynamic_cast<const IntegralTypeExtended*>(rhs) ); 0069 0070 const IntegralTypeExtended* type = static_cast<const IntegralTypeExtended*>(rhs); 0071 0072 return d_func()->m_dataType == type->d_func()->m_dataType; 0073 } 0074 0075 }