Simplified Serialization code for SourceLocation and SourceRange, and
updated it to the recently updated Serialization API.

Changed clients of SourceLocation serialization to call the
appropriate new methods.

Updated Decl serialization code to put new skeleton serialization code
in place that is much better than the older trait-specialization
approach.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43625 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/DeclSerialization.cpp b/AST/DeclSerialization.cpp
index 9b2278a..3a326f0 100644
--- a/AST/DeclSerialization.cpp
+++ b/AST/DeclSerialization.cpp
@@ -16,47 +16,13 @@
 #include "llvm/Bitcode/Serialize.h"
 #include "llvm/Bitcode/Deserialize.h"
 
-using llvm::SerializeTrait;
-using llvm::Deserializer;
-using llvm::Serializer;
 using namespace clang;
 
-
-static void EmitEnumConstantDecl(Serializer& S, EnumConstantDecl& decl) {
-  S.Emit(decl.getLocation());
-  S.EmitPtr(decl.getIdentifier());
-//  S.Emit(decl.getType());  FIXME
-  S.EmitOwnedPtr<Stmt>(decl.getInitExpr());
-    // S.Emit(decl.getInitVal()); FIXME
-  S.EmitOwnedPtr<Decl>(decl.getNextDeclarator());
+void Decl::Emit(llvm::Serializer& S) const {
+  assert ("FIXME: not implemented.");
 }
 
-static void EmitFunctionDecl(Serializer& S, FunctionDecl& decl) {
-  S.Emit(decl.getLocation());
-  S.EmitPtr(decl.getIdentifier());
-//  S.Emit(decl.getType()); FIXME
-//  S.Emit(decl.getStorageClass()); FIXME
-  S.EmitBool(decl.isInline());
-  S.EmitOwnedPtr<Decl>(decl.getNextDeclarator());
-}
-
-
-void SerializeTrait<Decl>::Emit(Serializer& S, Decl& decl) {
-  assert (!decl.isInvalidDecl() && "Can only serialize valid decls.");
-
-  S.EmitInt((unsigned) decl.getKind());
-
-  switch (decl.getKind()) {
-    default:
-      assert (false && "Serialization not implemented for decl type.");
-      return;
-      
-    case Decl::EnumConstant:
-      EmitEnumConstantDecl(S,cast<EnumConstantDecl>(decl));
-      return;
-      
-    case Decl::Function:
-      EmitFunctionDecl(S,cast<FunctionDecl>(decl));
-      return;      
-  }  
+Decl* Decl::Materialize(llvm::Deserializer& D) {
+  assert ("FIXME: not implemented.");
+  return NULL;
 }