diff options
author | Douglas Gregor <dgregor@apple.com> | 2008-10-22 17:49:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2008-10-22 17:49:05 +0000 |
commit | f8268ae3196002bbab6adb830302e79b0f368f13 (patch) | |
tree | 755160cb56f57dd7d7dafccc13858533037e619b /lib/AST/DeclCXX.cpp | |
parent | ed2cb285522513d33b001900acf211cc5ee2175b (diff) |
Add representation of base classes in the AST, and verify that we
don't have duplicated direct base classes.
Seriliazation of base class specifiers is not yet implemented.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57991 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclCXX.cpp')
-rw-r--r-- | lib/AST/DeclCXX.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp index 9fd7ff974e..86db8532c8 100644 --- a/lib/AST/DeclCXX.cpp +++ b/lib/AST/DeclCXX.cpp @@ -26,6 +26,14 @@ 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) { @@ -35,6 +43,12 @@ CXXRecordDecl *CXXRecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC, return R; } +CXXRecordDecl::~CXXRecordDecl() { + for (unsigned i = 0; i < NumBases; ++i) + delete Bases[i]; + delete [] Bases; +} + CXXMethodDecl * CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation L, IdentifierInfo *Id, |