Changeset View
Changeset View
Standalone View
Standalone View
kdevplatform/language/duchain/classmemberdeclaration.cpp
Show All 23 Lines | |||||
24 | #include "duchainregister.h" | 24 | #include "duchainregister.h" | ||
25 | #include <editor/rangeinrevision.h> | 25 | #include <editor/rangeinrevision.h> | ||
26 | 26 | | |||
27 | namespace KDevelop | 27 | namespace KDevelop | ||
28 | { | 28 | { | ||
29 | 29 | | |||
30 | ClassMemberDeclarationData::ClassMemberDeclarationData() | 30 | ClassMemberDeclarationData::ClassMemberDeclarationData() | ||
31 | : m_accessPolicy(Declaration::Public) | 31 | : m_accessPolicy(Declaration::Public) | ||
32 | , m_alignOfExponent(ClassMemberDeclarationData::MaxAlignOfExponent) | ||||
32 | , m_isStatic(false) | 33 | , m_isStatic(false) | ||
33 | , m_isAuto(false) | 34 | , m_isAuto(false) | ||
aaronpuchert: Maybe you should document somewhere that -1 means that no information is available. | |||||
34 | , m_isFriend(false) | 35 | , m_isFriend(false) | ||
35 | , m_isRegister(false) | 36 | , m_isRegister(false) | ||
36 | , m_isExtern(false) | 37 | , m_isExtern(false) | ||
37 | , m_isMutable(false) | 38 | , m_isMutable(false) | ||
39 | , m_sizeOf(-1) | ||||
40 | , m_bitOffsetOf(-1) | ||||
38 | { | 41 | { | ||
39 | } | 42 | } | ||
40 | 43 | | |||
41 | ClassMemberDeclaration::ClassMemberDeclaration(const ClassMemberDeclaration& rhs) : Declaration(*new ClassMemberDeclarationData(*rhs.d_func())) { | 44 | ClassMemberDeclaration::ClassMemberDeclaration(const ClassMemberDeclaration& rhs) : Declaration(*new ClassMemberDeclarationData(*rhs.d_func())) { | ||
42 | } | 45 | } | ||
43 | 46 | | |||
44 | REGISTER_DUCHAIN_ITEM(ClassMemberDeclaration); | 47 | REGISTER_DUCHAIN_ITEM(ClassMemberDeclaration); | ||
45 | 48 | | |||
▲ Show 20 Lines • Show All 99 Lines • ▼ Show 20 Line(s) | 147 | { | |||
145 | DUCHAIN_D_DYNAMIC(ClassMemberDeclaration); | 148 | DUCHAIN_D_DYNAMIC(ClassMemberDeclaration); | ||
146 | d->m_isStatic = specifiers & StaticSpecifier; | 149 | d->m_isStatic = specifiers & StaticSpecifier; | ||
147 | d->m_isAuto = specifiers & AutoSpecifier; | 150 | d->m_isAuto = specifiers & AutoSpecifier; | ||
148 | d->m_isFriend = specifiers & FriendSpecifier; | 151 | d->m_isFriend = specifiers & FriendSpecifier; | ||
149 | d->m_isRegister = specifiers & RegisterSpecifier; | 152 | d->m_isRegister = specifiers & RegisterSpecifier; | ||
150 | d->m_isExtern = specifiers & ExternSpecifier; | 153 | d->m_isExtern = specifiers & ExternSpecifier; | ||
151 | d->m_isMutable = specifiers & MutableSpecifier; | 154 | d->m_isMutable = specifiers & MutableSpecifier; | ||
152 | } | 155 | } | ||
156 | | ||||
157 | | ||||
158 | int64_t ClassMemberDeclaration::sizeOf() const | ||||
159 | { | ||||
160 | return d_func()->m_sizeOf; | ||||
161 | } | ||||
162 | | ||||
163 | void ClassMemberDeclaration::setSizeOf(int64_t sizeOf) | ||||
164 | { | ||||
165 | d_func_dynamic()->m_sizeOf = sizeOf; | ||||
166 | } | ||||
167 | | ||||
168 | int64_t ClassMemberDeclaration::bitOffsetOf() const | ||||
169 | { | ||||
170 | return d_func()->m_bitOffsetOf; | ||||
171 | } | ||||
172 | | ||||
173 | void ClassMemberDeclaration::setBitOffsetOf(int64_t bitOffsetOf) | ||||
174 | { | ||||
175 | d_func_dynamic()->m_bitOffsetOf = bitOffsetOf; | ||||
176 | } | ||||
177 | | ||||
178 | int64_t ClassMemberDeclaration::alignOf() const | ||||
179 | { | ||||
180 | if (d_func()->m_alignOfExponent == ClassMemberDeclarationData::MaxAlignOfExponent) { | ||||
181 | return -1; | ||||
182 | } else { | ||||
183 | return 1 << d_func()->m_alignOfExponent; | ||||
184 | } | ||||
185 | } | ||||
186 | | ||||
187 | void ClassMemberDeclaration::setAlignOf(int64_t alignedTo) | ||||
188 | { | ||||
189 | if (alignedTo <= 0) { | ||||
190 | d_func_dynamic()->m_alignOfExponent = ClassMemberDeclarationData::MaxAlignOfExponent; | ||||
191 | return; | ||||
aaronpuchert: I guess you meant to return here. | |||||
192 | } | ||||
193 | | ||||
Make this unsigned to avoid signed -> unsigned conversion when storing the value. aaronpuchert: Make this unsigned to avoid signed -> unsigned conversion when storing the value. | |||||
194 | unsigned int alignOfExponent = 0; | ||||
195 | while (alignedTo >>= 1) | ||||
196 | alignOfExponent++; | ||||
197 | d_func_dynamic()->m_alignOfExponent = alignOfExponent; | ||||
Can be slightly simplified, because we know here that alignedTo != 0: while (alignedTo >>= 1) alignOfExponent++; aaronpuchert: Can be slightly simplified, because we know here that `alignedTo != 0`:
```
while… | |||||
198 | } | ||||
199 | | ||||
153 | } | 200 | } |
Maybe you should document somewhere that -1 means that no information is available.