[cfe-commits] r44094 - in /cfe/trunk: AST/TypeSerialization.cpp include/clang/AST/Type.h

Ted Kremenek kremenek at apple.com
Tue Nov 13 16:38:50 PST 2007


Author: kremenek
Date: Tue Nov 13 18:38:50 2007
New Revision: 44094

URL: http://llvm.org/viewvc/llvm-project?rev=44094&view=rev
Log:
Implemented serialization of FunctionTypeNoProto.

Modified:
    cfe/trunk/AST/TypeSerialization.cpp
    cfe/trunk/include/clang/AST/Type.h

Modified: cfe/trunk/AST/TypeSerialization.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/AST/TypeSerialization.cpp?rev=44094&r1=44093&r2=44094&view=diff

==============================================================================
--- cfe/trunk/AST/TypeSerialization.cpp (original)
+++ cfe/trunk/AST/TypeSerialization.cpp Tue Nov 13 18:38:50 2007
@@ -73,6 +73,10 @@
     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 @@
 }
 
 //===----------------------------------------------------------------------===//
-// FunctionTypeProto
+// FunctionTypeNoProto
 //===----------------------------------------------------------------------===//
 
 void FunctionTypeProto::EmitImpl(Serializer& S) const {
@@ -148,12 +152,24 @@
   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();
 }
 
 //===----------------------------------------------------------------------===//

Modified: cfe/trunk/include/clang/AST/Type.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Type.h?rev=44094&r1=44093&r2=44094&view=diff

==============================================================================
--- cfe/trunk/include/clang/AST/Type.h (original)
+++ cfe/trunk/include/clang/AST/Type.h Tue Nov 13 18:38:50 2007
@@ -751,6 +751,11 @@
     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.





More information about the cfe-commits mailing list