summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclSerialization.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2008-04-27 13:50:30 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2008-04-27 13:50:30 +0000
commit081148986a60a761ac7528a9a132cab2ec70273b (patch)
tree94d2519348f1902edfbc32e6039e8c50b6d5c100 /clang/lib/AST/DeclSerialization.cpp
parented1eec4812bee974d9e7aafff96950184371b9af (diff)
downloadbcm5719-llvm-081148986a60a761ac7528a9a132cab2ec70273b.tar.gz
bcm5719-llvm-081148986a60a761ac7528a9a132cab2ec70273b.zip
Parsing of namespaces:
-NamespaceDecl for the AST -Checks for name clashes between namespaces and tag/normal declarations. This commit doesn't implement proper name lookup for namespaces. llvm-svn: 50321
Diffstat (limited to 'clang/lib/AST/DeclSerialization.cpp')
-rw-r--r--clang/lib/AST/DeclSerialization.cpp30
1 files changed, 28 insertions, 2 deletions
diff --git a/clang/lib/AST/DeclSerialization.cpp b/clang/lib/AST/DeclSerialization.cpp
index 6186649e70a..cbae8313082 100644
--- a/clang/lib/AST/DeclSerialization.cpp
+++ b/clang/lib/AST/DeclSerialization.cpp
@@ -44,6 +44,9 @@ Decl* Decl::Create(Deserializer& D, ASTContext& C) {
case TranslationUnit:
return TranslationUnitDecl::CreateImpl(D, C);
+ case Namespace:
+ return NamespaceDecl::CreateImpl(D, C);
+
case Var:
return VarDecl::CreateImpl(D, C);
@@ -206,8 +209,7 @@ void TranslationUnitDecl::EmitImpl(llvm::Serializer& S) const
TranslationUnitDecl* TranslationUnitDecl::CreateImpl(Deserializer& D,
ASTContext& C) {
void *Mem = C.getAllocator().Allocate<TranslationUnitDecl>();
- TranslationUnitDecl* decl =
- new (Mem) TranslationUnitDecl();
+ TranslationUnitDecl* decl = new (Mem) TranslationUnitDecl();
decl->Decl::ReadInRec(D, C);
@@ -215,6 +217,30 @@ TranslationUnitDecl* TranslationUnitDecl::CreateImpl(Deserializer& D,
}
//===----------------------------------------------------------------------===//
+// NamespaceDecl Serialization.
+//===----------------------------------------------------------------------===//
+
+void NamespaceDecl::EmitImpl(llvm::Serializer& S) const
+{
+ ScopedDecl::EmitInRec(S);
+ S.Emit(getLBracLoc());
+ S.Emit(getRBracLoc());
+ ScopedDecl::EmitOutRec(S);
+}
+
+NamespaceDecl* NamespaceDecl::CreateImpl(Deserializer& D, ASTContext& C) {
+ void *Mem = C.getAllocator().Allocate<NamespaceDecl>();
+ NamespaceDecl* decl = new (Mem) NamespaceDecl(0, SourceLocation(), 0);
+
+ decl->ScopedDecl::ReadInRec(D, C);
+ decl->LBracLoc = SourceLocation::ReadVal(D);
+ decl->RBracLoc = SourceLocation::ReadVal(D);
+ decl->ScopedDecl::ReadOutRec(D, C);
+
+ return decl;
+}
+
+//===----------------------------------------------------------------------===//
// VarDecl Serialization.
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud