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
|
/*
SPDX-FileCopyrightText: 2009 Milian Wolff <mail@milianw.de>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef INTEGRALTYPEEXTENDED_H
#define INTEGRALTYPEEXTENDED_H
#include <language/duchain/types/integraltype.h>
#include <language/duchain/types/typesystemdata.h>
#include "phpduchainexport.h"
namespace Php
{
typedef KDevelop::IntegralTypeData IntegralTypeExtendedData;
/**
* Drop-In replacement for the IntegralType in KDevplatform with
* some extended logic specific for PHP
*/
class KDEVPHPDUCHAIN_EXPORT IntegralTypeExtended: public KDevelop::IntegralType
{
public:
typedef KDevelop::TypePtr<IntegralTypeExtended> Ptr;
enum PHPIntegralTypes {
TypeResource = KDevelop::IntegralType::TypeLanguageSpecific,
TypeCallable,
TypeObject
};
/// Default constructor
IntegralTypeExtended(uint type = TypeNone);
/// Copy constructor. \param rhs type to copy
IntegralTypeExtended(const IntegralTypeExtended& rhs);
/// Constructor using raw data. \param data internal data.
IntegralTypeExtended(IntegralTypeExtendedData& data);
QString toString() const override;
KDevelop::AbstractType* clone() const override;
bool equals(const KDevelop::AbstractType* rhs) const override;
uint hash() const override;
enum {
///TODO: is that value OK?
Identity = 50
};
typedef KDevelop::IntegralTypeData Data;
typedef KDevelop::IntegralType BaseType;
protected:
TYPE_DECLARE_DATA(IntegralTypeExtended);
};
}
#endif // PHPINTEGRALTYPE_H
|