diff options
author | Douglas Gregor <dgregor@apple.com> | 2008-10-23 18:13:27 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2008-10-23 18:13:27 +0000 |
commit | 57c856b96e6bbfc64c2d61b950b116b523dc3e46 (patch) | |
tree | b1ddcdaebfdcab6a974e1d5b45096bcdcdc2c91c /lib/AST/DeclCXX.cpp | |
parent | 4c877cc89bd7b29917002f370b97bc19b114459e (diff) |
Clean up and document the representation of C++ base classes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58040 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclCXX.cpp')
-rw-r--r-- | lib/AST/DeclCXX.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp index 86db8532c8..8baf4196bf 100644 --- a/lib/AST/DeclCXX.cpp +++ b/lib/AST/DeclCXX.cpp @@ -26,14 +26,6 @@ CXXFieldDecl *CXXFieldDecl::Create(ASTContext &C, CXXRecordDecl *RD, return new (Mem) CXXFieldDecl(RD, L, Id, T, BW); } -CXXBaseSpecifier *CXXBaseSpecifier::Create(ASTContext &C, SourceRange R, bool V, - bool BC, AccessSpecifier A, QualType T) -{ - void *Mem = C.getAllocator().Allocate<CXXBaseSpecifier>(); - CXXBaseSpecifier* BS = new (Mem) CXXBaseSpecifier(R, V, BC, A, T); - return BS; -} - CXXRecordDecl *CXXRecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC, SourceLocation L, IdentifierInfo *Id, CXXRecordDecl* PrevDecl) { @@ -44,11 +36,21 @@ CXXRecordDecl *CXXRecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC, } CXXRecordDecl::~CXXRecordDecl() { - for (unsigned i = 0; i < NumBases; ++i) - delete Bases[i]; delete [] Bases; } +void +CXXRecordDecl::setBases(CXXBaseSpecifier const * const *Bases, + unsigned NumBases) { + if (this->Bases) + delete [] this->Bases; + + this->Bases = new CXXBaseSpecifier[NumBases]; + this->NumBases = NumBases; + for (unsigned i = 0; i < NumBases; ++i) + this->Bases[i] = *Bases[i]; +} + CXXMethodDecl * CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation L, IdentifierInfo *Id, |