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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
/*
SPDX-FileCopyrightText: 2002-2005 Roberto Raggi <roberto@kdevelop.org>
SPDX-FileCopyrightText: 2006 Adam Treat <treat@kde.org>
SPDX-FileCopyrightText: 2006 Hamish Rodda <rodda@kde.org>
SPDX-FileCopyrightText: 2007-2008 David Nolden <david.nolden.kdevelop@art-master.de>
SPDX-License-Identifier: LGPL-2.0-only
*/
#ifndef KDEVPLATFORM_CLASSMEMBERDECLARATION_H
#define KDEVPLATFORM_CLASSMEMBERDECLARATION_H
#include "declaration.h"
namespace KDevelop {
class ClassMemberDeclarationData;
/**
* Represents a single class member definition in a definition-use chain.
*/
class KDEVPLATFORMLANGUAGE_EXPORT ClassMemberDeclaration
: public Declaration
{
public:
ClassMemberDeclaration(const ClassMemberDeclaration& rhs);
ClassMemberDeclaration(const RangeInRevision& range, DUContext* context);
explicit ClassMemberDeclaration(ClassMemberDeclarationData& dd);
~ClassMemberDeclaration() override;
ClassMemberDeclaration& operator=(const ClassMemberDeclaration& rhs) = delete;
AccessPolicy accessPolicy() const;
void setAccessPolicy(AccessPolicy accessPolicy);
enum StorageSpecifier {
StaticSpecifier = 0x1 /**< indicates static member */,
AutoSpecifier = 0x2 /**< indicates automatic determination of member access */,
FriendSpecifier = 0x4 /**< indicates friend member */,
ExternSpecifier = 0x8 /**< indicates external declaration */,
RegisterSpecifier = 0x10 /**< indicates register */,
MutableSpecifier = 0x20/**< indicates a mutable member */
};
Q_DECLARE_FLAGS(StorageSpecifiers, StorageSpecifier)
void setStorageSpecifiers(StorageSpecifiers specifiers);
bool isStatic() const;
void setStatic(bool isStatic);
bool isAuto() const;
void setAuto(bool isAuto);
bool isFriend() const;
void setFriend(bool isFriend);
bool isRegister() const;
void setRegister(bool isRegister);
bool isExtern() const;
void setExtern(bool isExtern);
bool isMutable() const;
void setMutable(bool isMutable);
/**
* \returns The offset of the field in bits or -1 if unknown or not applicable.
*/
int64_t bitOffsetOf() const;
/**
* Set the offset to given number of bits. Use -1 to represent unknown offset.
*/
void setBitOffsetOf(int64_t bitOffsetOf);
/**
* \returns The width in bits or -1 if unknown or not applicable.
*/
int bitWidth() const;
/**
* Set the width to given number of bits. Use -1 to represent unknown offset.
*/
void setBitWidth(int bitWidth);
enum {
Identity = 9
};
protected:
ClassMemberDeclaration(ClassMemberDeclarationData& dd, const RangeInRevision& range);
DUCHAIN_DECLARE_DATA(ClassMemberDeclaration)
private:
Declaration* clonePrivate() const override;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ClassMemberDeclaration::StorageSpecifiers)
}
#endif // KDEVPLATFORM_CLASSMEMBERDECLARATION_H
|