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

AST/TypeSerialization.cpp
include/clang/AST/Type.h

index 24ff9f34a07f07f96732cfccd7bd8a74416177e9..ba32abfb5dc71a71de1c92d4e396c101c0688d8e 100644 (file)
@@ -73,6 +73,10 @@ void Type::Create(ASTContext& Context, unsigned i, Deserializer& D) {
     case Type::ConstantArray:
       D.RegisterPtr(PtrID,ConstantArrayType::CreateImpl(Context,D));
       
+    case Type::FunctionNoProto:
+      D.RegisterPtr(PtrID,FunctionTypeNoProto::CreateImpl(Context,D));
+      break;
+      
     case Type::FunctionProto:
       D.RegisterPtr(PtrID,FunctionTypeProto::CreateImpl(Context,D));
       break;
@@ -130,7 +134,7 @@ Type* ConstantArrayType::CreateImpl(ASTContext& Context, Deserializer& D) {
 }
 
 //===----------------------------------------------------------------------===//
-// FunctionTypeProto
+// FunctionTypeNoProto
 //===----------------------------------------------------------------------===//
 
 void FunctionTypeProto::EmitImpl(Serializer& S) const {
@@ -148,12 +152,24 @@ Type* FunctionTypeProto::CreateImpl(ASTContext& Context, Deserializer& D) {
   unsigned NumArgs = D.ReadInt();
   
   llvm::SmallVector<QualType,15> Args;
-
+  
   for (unsigned j = 0; j < NumArgs; ++j)
     Args.push_back(QualType::ReadVal(D));
-
+  
   return Context.getFunctionType(ResultType,&*Args.begin(), 
-                           NumArgs,isVariadic).getTypePtr();
+                                 NumArgs,isVariadic).getTypePtr();
+}
+
+//===----------------------------------------------------------------------===//
+// FunctionTypeProto
+//===----------------------------------------------------------------------===//
+
+void FunctionTypeNoProto::EmitImpl(Serializer& S) const {
+  S.Emit(getResultType());
+}
+
+Type* FunctionTypeNoProto::CreateImpl(ASTContext& Context, Deserializer& D) {
+  return Context.getFunctionTypeNoProto(QualType::ReadVal(D)).getTypePtr();
 }
 
 //===----------------------------------------------------------------------===//
index 1209a70a050db183ad81a4102d82a776a7516a3a..fb3e38f123abb24297bfbce9b5247e2d50e7d2b0 100644 (file)
@@ -751,6 +751,11 @@ public:
     return T->getTypeClass() == FunctionNoProto;
   }
   static bool classof(const FunctionTypeNoProto *) { return true; }
+  
+protected:  
+  virtual void EmitImpl(llvm::Serializer& S) const;
+  static Type* CreateImpl(ASTContext& Context,llvm::Deserializer& D);
+  friend class Type;
 };
 
 /// FunctionTypeProto - Represents a prototype with argument type info, e.g.