]> granicus.if.org Git - clang/commitdiff
Implemented serialization of FieldDecls.
authorTed Kremenek <kremenek@apple.com>
Wed, 14 Nov 2007 17:47:01 +0000 (17:47 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 14 Nov 2007 17:47:01 +0000 (17:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44126 91177308-0d34-0410-b5e6-96231b3b80d8

AST/DeclSerialization.cpp
include/clang/AST/Decl.h

index cfab8cc76d22d2023df0246120bd51b8e5a53977..3e2ce0fcc8c74c48ad7ba738b90cc862e4a8a17d 100644 (file)
@@ -43,6 +43,9 @@ Decl* Decl::Create(Deserializer& D) {
     case BlockVar:
       return BlockVarDecl::CreateImpl(D);
       
+    case Field:
+      return FieldDecl::CreateImpl(D);
+      
     case FileVar:
       return FileVarDecl::CreateImpl(D);
       
@@ -216,6 +219,24 @@ ParmVarDecl* ParmVarDecl::CreateImpl(Deserializer& D) {
   return decl;
 }
 
+//===----------------------------------------------------------------------===//
+//      FieldDecl Serialization.
+//===----------------------------------------------------------------------===//
+
+void FieldDecl::EmitImpl(Serializer& S) const {
+  S.Emit(getType());
+  NamedDecl::EmitInRec(S);
+  S.EmitOwnedPtr(BitWidth);  
+}
+
+FieldDecl* FieldDecl::CreateImpl(Deserializer& D) {
+  QualType DeclType = QualType::ReadVal(D);
+  FieldDecl* decl = new FieldDecl(SourceLocation(),NULL,DeclType);
+  decl->ReadInRec(D);
+  decl->BitWidth = D.ReadOwnedPtr<Expr>();
+  return decl;
+}
+
 //===----------------------------------------------------------------------===//
 //      FunctionDecl Serialization.
 //===----------------------------------------------------------------------===//
index 0ffb3277dd3e6046a6a8953f2c3419cc047e7f01..5930d967113216eea6fbed137113f93d12c4446a 100644 (file)
@@ -505,6 +505,15 @@ public:
     return D->getKind() >= FieldFirst && D->getKind() <= FieldLast;
   }
   static bool classof(const FieldDecl *D) { return true; }
+
+protected:
+  /// EmitImpl - Serialize this FieldDecl.  Called by Decl::Emit.
+  virtual void EmitImpl(llvm::Serializer& S) const;
+  
+  /// CreateImpl - Deserialize a FieldDecl.  Called by Decl::Create.
+  static FieldDecl* CreateImpl(llvm::Deserializer& D);
+  
+  friend Decl* Decl::Create(llvm::Deserializer& D);  
 };
 
 /// EnumConstantDecl - An instance of this object exists for each enum constant