1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/*
SPDX-FileCopyrightText: 2009 Milian Wolff <mail@milianw.de>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "integraltypeextended.h"
#include <language/duchain/types/typeregister.h>
using namespace KDevelop;
namespace Php
{
REGISTER_TYPE(IntegralTypeExtended);
IntegralTypeExtended::IntegralTypeExtended(const IntegralTypeExtended& rhs)
: IntegralType(copyData<IntegralTypeExtended>(*rhs.d_func()))
{
}
IntegralTypeExtended::IntegralTypeExtended(IntegralTypeExtendedData& data)
: IntegralType(data)
{
}
IntegralTypeExtended::IntegralTypeExtended(uint type)
: IntegralType(createData<IntegralTypeExtended>())
{
setDataType(type);
setModifiers(ConstModifier);
}
QString IntegralTypeExtended::toString() const
{
if ( d_func()->m_dataType == TypeResource ) {
return QStringLiteral("resource");
} else if (d_func()->m_dataType == TypeCallable) {
return QStringLiteral("callable");
} else if (d_func()->m_dataType == TypeObject) {
return QStringLiteral("object");
}
return KDevelop::IntegralType::toString();
}
KDevelop::AbstractType* IntegralTypeExtended::clone() const
{
return new IntegralTypeExtended(*this);
}
uint IntegralTypeExtended::hash() const
{
return 4 * KDevelop::IntegralType::hash();
}
bool IntegralTypeExtended::equals(const KDevelop::AbstractType* rhs) const
{
if( this == rhs ) {
return true;
}
if ( !IntegralType::equals(rhs) ) {
return false;
}
Q_ASSERT( dynamic_cast<const IntegralTypeExtended*>(rhs) );
const IntegralTypeExtended* type = static_cast<const IntegralTypeExtended*>(rhs);
return d_func()->m_dataType == type->d_func()->m_dataType;
}
}
|