summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclGroup.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-10-07 23:06:01 +0000
committerTed Kremenek <kremenek@apple.com>2008-10-07 23:06:01 +0000
commit12183e25aa35cbaf6ef317cabca5dba1d543a23e (patch)
tree5b9ee1b31c577b9d2081dde49519dcbae392b371 /clang/lib/AST/DeclGroup.cpp
parentf9638bac596202a0391a4f9c268fb6d0ef5a59ee (diff)
downloadbcm5719-llvm-12183e25aa35cbaf6ef317cabca5dba1d543a23e.tar.gz
bcm5719-llvm-12183e25aa35cbaf6ef317cabca5dba1d543a23e.zip
Add const_iterator to DeclGroup.
Serialization for OwningDeclGroupRefs now works. llvm-svn: 57272
Diffstat (limited to 'clang/lib/AST/DeclGroup.cpp')
-rw-r--r--clang/lib/AST/DeclGroup.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/clang/lib/AST/DeclGroup.cpp b/clang/lib/AST/DeclGroup.cpp
index bd79fafc8f3..5ddcd5954db 100644
--- a/clang/lib/AST/DeclGroup.cpp
+++ b/clang/lib/AST/DeclGroup.cpp
@@ -21,6 +21,7 @@
using namespace clang;
DeclGroup* DeclGroup::Create(ASTContext& C, unsigned numdecls, Decl** decls) {
+ assert (numdecls > 0);
unsigned size = sizeof(DeclGroup) + sizeof(Decl*) * numdecls;
unsigned alignment = llvm::AlignOf<DeclGroup>::Alignment;
void* mem = C.getAllocator().Allocate(size, alignment);
@@ -46,7 +47,7 @@ DeclGroup* DeclGroup::Create(llvm::Deserializer& D, ASTContext& C) {
return DG;
}
-DeclGroup::DeclGroup(unsigned numdecls, Decl** decls) {
+DeclGroup::DeclGroup(unsigned numdecls, Decl** decls) : NumDecls(numdecls) {
assert (numdecls > 0);
assert (decls);
memcpy(this+1, decls, numdecls * sizeof(*decls));
@@ -110,13 +111,15 @@ void DeclGroupOwningRef::Emit(llvm::Serializer& S) const {
}
}
-DeclGroupOwningRef DeclGroupOwningRef::ReadVal(llvm::Deserializer& D,
- ASTContext& C) {
- if (D.ReadBool()) {
- DeclGroupOwningRef DG(D.ReadOwnedPtr<Decl>(C));
- return DG;
+DeclGroupOwningRef& DeclGroupOwningRef::Read(llvm::Deserializer& Dezr,
+ ASTContext& C) {
+
+ if (!Dezr.ReadBool())
+ D = Dezr.ReadOwnedPtr<Decl>(C);
+ else {
+ uintptr_t x = reinterpret_cast<uintptr_t>(Dezr.ReadOwnedPtr<DeclGroup>(C));
+ D = reinterpret_cast<Decl*>(x | DeclGroupKind);
}
-
- DeclGroupOwningRef DG(D.ReadOwnedPtr<DeclGroup>(C));
- return DG;
+
+ return *this;
}
OpenPOWER on IntegriCloud