diff options
| author | Ted Kremenek <kremenek@apple.com> | 2007-10-25 21:37:16 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2007-10-25 21:37:16 +0000 |
| commit | 1f1e7564834577ae031120d8988c26cb5fdd0ced (patch) | |
| tree | 23e857075fb9c1e00946acaead2cd7a4ac3a0bca /clang/AST/DeclSerialization.cpp | |
| parent | 51f2182338e55e076d360b9eff6e1ac0d7411d32 (diff) | |
| download | bcm5719-llvm-1f1e7564834577ae031120d8988c26cb5fdd0ced.tar.gz bcm5719-llvm-1f1e7564834577ae031120d8988c26cb5fdd0ced.zip | |
Added skeleton for Decl serialization.
llvm-svn: 43361
Diffstat (limited to 'clang/AST/DeclSerialization.cpp')
| -rw-r--r-- | clang/AST/DeclSerialization.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/clang/AST/DeclSerialization.cpp b/clang/AST/DeclSerialization.cpp new file mode 100644 index 00000000000..9b2278a4beb --- /dev/null +++ b/clang/AST/DeclSerialization.cpp @@ -0,0 +1,62 @@ +//===--- DeclSerialization.cpp - Serialization of Decls ---------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Ted Kremenek and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This files defines methods that implement bitcode serialization for Decls. +// +//===----------------------------------------------------------------------===// + +#include "clang/AST/Decl.h" +#include "clang/AST/Expr.h" +#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()); +} + +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; + } +} |

