RecordDecl:
- Added method 'isForwardDeclaration', a predicate method that returns true if a RecordDecl represents a forward declaration. - Added method 'getDefinitionDecl', a query method that returns a pointer to the RecordDecl that provides the actual definition of a struct/union. llvm-svn: 55642
This commit is contained in:
parent
115267fdc6
commit
318d78f50b
|
@ -802,6 +802,7 @@ class RecordDecl : public TagDecl {
|
|||
/// (i.e., all forward declarations appear first in the chain). Note that
|
||||
/// one should make no other assumption about the order of the RecordDecl's
|
||||
/// within this chain with respect to the original source.
|
||||
/// NOTE: This is *not* an owning reference.
|
||||
RecordDecl* NextDecl;
|
||||
|
||||
/// Members/NumMembers - This is a new[]'d array of pointers to Decls.
|
||||
|
@ -821,6 +822,18 @@ public:
|
|||
|
||||
virtual void Destroy(ASTContext& C);
|
||||
|
||||
/// isForwardDeclaration - Returns true if this RecordDecl represents a
|
||||
/// forward declaration.
|
||||
bool isForwardDeclaration() const {
|
||||
assert ((!Members || NextDecl == 0) && "(Members != 0) => (NextDecl == 0)");
|
||||
return !Members;
|
||||
}
|
||||
|
||||
/// getDefinitionDecl - Returns the RecordDecl for the struct/union that
|
||||
/// represents the actual definition (i.e., not a forward declaration).
|
||||
/// This method returns NULL if no such RecordDecl exists.
|
||||
const RecordDecl* getDefinitionDecl() const;
|
||||
|
||||
bool hasFlexibleArrayMember() const { return HasFlexibleArrayMember; }
|
||||
void setHasFlexibleArrayMember(bool V) { HasFlexibleArrayMember = V; }
|
||||
|
||||
|
|
|
@ -160,6 +160,18 @@ RecordDecl *RecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC,
|
|||
return new (Mem) RecordDecl(DK, DC, L, Id, PrevDecl);
|
||||
}
|
||||
|
||||
/// getDefinitionDecl - Returns the RecordDecl for the struct/union that
|
||||
/// represents the actual definition (i.e., not a forward declaration).
|
||||
/// This method returns NULL if no such RecordDecl exists.
|
||||
const RecordDecl* RecordDecl::getDefinitionDecl() const {
|
||||
const RecordDecl* R = this;
|
||||
|
||||
for (RecordDecl* N = R->NextDecl; N; N = R->NextDecl)
|
||||
R = N;
|
||||
|
||||
return R->Members ? R : 0;
|
||||
}
|
||||
|
||||
|
||||
FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C,
|
||||
SourceLocation L,
|
||||
|
|
Loading…
Reference in New Issue