File indexing completed on 2024-05-12 04:37:56
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 "classmemberdeclaration.h" 0011 #include "classmemberdeclarationdata.h" 0012 #include "duchainregister.h" 0013 #include <editor/rangeinrevision.h> 0014 0015 namespace KDevelop { 0016 ClassMemberDeclarationData::ClassMemberDeclarationData() 0017 : m_accessPolicy(Declaration::Public) 0018 , m_isStatic(false) 0019 , m_isAuto(false) 0020 , m_isFriend(false) 0021 , m_isRegister(false) 0022 , m_isExtern(false) 0023 , m_isMutable(false) 0024 , m_bitWidth(ClassMemberDeclaration::NotABitField) 0025 , m_bitOffsetOf(-1) 0026 { 0027 } 0028 0029 ClassMemberDeclaration::ClassMemberDeclaration(const ClassMemberDeclaration& rhs) : Declaration(*new ClassMemberDeclarationData( 0030 *rhs.d_func())) 0031 { 0032 } 0033 0034 REGISTER_DUCHAIN_ITEM(ClassMemberDeclaration); 0035 0036 Declaration* ClassMemberDeclaration::clonePrivate() const 0037 { 0038 return new ClassMemberDeclaration(*this); 0039 } 0040 0041 ClassMemberDeclaration::ClassMemberDeclaration(const RangeInRevision& range, DUContext* context) 0042 : Declaration(*new ClassMemberDeclarationData, range) 0043 { 0044 d_func_dynamic()->setClassId(this); 0045 if (context) 0046 setContext(context); 0047 } 0048 0049 ClassMemberDeclaration::ClassMemberDeclaration(ClassMemberDeclarationData& dd, const RangeInRevision& range) 0050 : Declaration(dd, range) 0051 { 0052 } 0053 0054 ClassMemberDeclaration::ClassMemberDeclaration(ClassMemberDeclarationData& dd) 0055 : Declaration(dd) 0056 { 0057 } 0058 0059 ClassMemberDeclaration::~ClassMemberDeclaration() 0060 { 0061 } 0062 0063 bool ClassMemberDeclaration::isStatic() const 0064 { 0065 return d_func()->m_isStatic; 0066 } 0067 0068 void ClassMemberDeclaration::setStatic(bool isStatic) 0069 { 0070 d_func_dynamic()->m_isStatic = isStatic; 0071 } 0072 0073 bool ClassMemberDeclaration::isAuto() const 0074 { 0075 return d_func()->m_isAuto; 0076 } 0077 0078 void ClassMemberDeclaration::setAuto(bool isAuto) 0079 { 0080 d_func_dynamic()->m_isAuto = isAuto; 0081 } 0082 0083 bool ClassMemberDeclaration::isFriend() const 0084 { 0085 return d_func()->m_isFriend; 0086 } 0087 0088 void ClassMemberDeclaration::setFriend(bool isFriend) 0089 { 0090 d_func_dynamic()->m_isFriend = isFriend; 0091 } 0092 0093 bool ClassMemberDeclaration::isRegister() const 0094 { 0095 return d_func()->m_isRegister; 0096 } 0097 0098 void ClassMemberDeclaration::setRegister(bool isRegister) 0099 { 0100 d_func_dynamic()->m_isRegister = isRegister; 0101 } 0102 0103 bool ClassMemberDeclaration::isExtern() const 0104 { 0105 return d_func()->m_isExtern; 0106 } 0107 0108 void ClassMemberDeclaration::setExtern(bool isExtern) 0109 { 0110 d_func_dynamic()->m_isExtern = isExtern; 0111 } 0112 0113 bool ClassMemberDeclaration::isMutable() const 0114 { 0115 return d_func()->m_isMutable; 0116 } 0117 0118 void ClassMemberDeclaration::setMutable(bool isMutable) 0119 { 0120 d_func_dynamic()->m_isMutable = isMutable; 0121 } 0122 0123 Declaration::AccessPolicy ClassMemberDeclaration::accessPolicy() const 0124 { 0125 return d_func()->m_accessPolicy; 0126 } 0127 0128 void ClassMemberDeclaration::setAccessPolicy(Declaration::AccessPolicy accessPolicy) 0129 { 0130 d_func_dynamic()->m_accessPolicy = accessPolicy; 0131 } 0132 0133 void ClassMemberDeclaration::setStorageSpecifiers(StorageSpecifiers specifiers) 0134 { 0135 DUCHAIN_D_DYNAMIC(ClassMemberDeclaration); 0136 d->m_isStatic = specifiers & StaticSpecifier; 0137 d->m_isAuto = specifiers & AutoSpecifier; 0138 d->m_isFriend = specifiers & FriendSpecifier; 0139 d->m_isRegister = specifiers & RegisterSpecifier; 0140 d->m_isExtern = specifiers & ExternSpecifier; 0141 d->m_isMutable = specifiers & MutableSpecifier; 0142 } 0143 0144 int64_t ClassMemberDeclaration::bitOffsetOf() const 0145 { 0146 return d_func()->m_bitOffsetOf; 0147 } 0148 0149 void ClassMemberDeclaration::setBitOffsetOf(int64_t bitOffsetOf) 0150 { 0151 d_func_dynamic()->m_bitOffsetOf = bitOffsetOf; 0152 } 0153 0154 int ClassMemberDeclaration::bitWidth() const 0155 { 0156 return d_func()->m_bitWidth; 0157 } 0158 0159 void ClassMemberDeclaration::setBitWidth(int bitWidth) 0160 { 0161 d_func_dynamic()->m_bitWidth = bitWidth; 0162 } 0163 }