]> granicus.if.org Git - clang/commitdiff
Implemented serialization of LangOptions.
authorTed Kremenek <kremenek@apple.com>
Wed, 5 Dec 2007 19:06:15 +0000 (19:06 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 5 Dec 2007 19:06:15 +0000 (19:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44624 91177308-0d34-0410-b5e6-96231b3b80d8

Basic/LangOptions.cpp [new file with mode: 0644]
include/clang/Basic/LangOptions.h

diff --git a/Basic/LangOptions.cpp b/Basic/LangOptions.cpp
new file mode 100644 (file)
index 0000000..f12c77d
--- /dev/null
@@ -0,0 +1,58 @@
+//===--- SourceManager.cpp - Track and cache source files -----------------===//
+//
+//                     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 file implements the methods for LangOptions.
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/Basic/LangOptions.h"
+#include "llvm/Bitcode/Serialize.h"
+#include "llvm/Bitcode/Deserialize.h"
+
+using namespace clang;
+
+void LangOptions::Emit(llvm::Serializer& S) const {
+  S.EmitBool((bool) Trigraphs);
+  S.EmitBool((bool) BCPLComment);
+  S.EmitBool((bool) DollarIdents);
+  S.EmitBool((bool) Digraphs);
+  S.EmitBool((bool) HexFloats);
+  S.EmitBool((bool) C99);
+  S.EmitBool((bool) Microsoft);
+  S.EmitBool((bool) CPlusPlus);
+  S.EmitBool((bool) CPlusPlus0x);
+  S.EmitBool((bool) NoExtensions);
+  S.EmitBool((bool) CXXOperatorNames);             
+  S.EmitBool((bool) ObjC1);
+  S.EmitBool((bool) ObjC2);             
+  S.EmitBool((bool) PascalStrings);
+  S.EmitBool((bool) Boolean);
+  S.EmitBool((bool) WritableStrings);
+  S.EmitBool((bool) LaxVectorConversions);
+}
+
+void LangOptions::Read(llvm::Deserializer& D) {
+  Trigraphs = D.ReadBool() ? 1 : 0;
+  BCPLComment = D.ReadBool() ? 1 : 0;
+  DollarIdents = D.ReadBool() ? 1 : 0;
+  Digraphs = D.ReadBool() ? 1 : 0;
+  HexFloats = D.ReadBool() ? 1 : 0;
+  C99 = D.ReadBool() ? 1 : 0;
+  Microsoft = D.ReadBool() ? 1 : 0;
+  CPlusPlus = D.ReadBool() ? 1 : 0;
+  CPlusPlus0x = D.ReadBool() ? 1 : 0;
+  NoExtensions = D.ReadBool() ? 1 : 0;
+  CXXOperatorNames = D.ReadBool() ? 1 : 0;
+  ObjC1 = D.ReadBool() ? 1 : 0;
+  ObjC2 = D.ReadBool() ? 1 : 0;
+  PascalStrings = D.ReadBool() ? 1 : 0;
+  Boolean = D.ReadBool() ? 1 : 0;
+  WritableStrings = D.ReadBool() ? 1 : 0;
+  LaxVectorConversions = D.ReadBool() ? 1 : 0;
+}
index 8c6aeba889897cc2c1dd4bf69064e585f0c655f8..2e0af6e42f061d858dbca3e43995a49f8eefbf31 100644 (file)
@@ -14,6 +14,8 @@
 #ifndef LLVM_CLANG_LANGOPTIONS_H
 #define LLVM_CLANG_LANGOPTIONS_H
 
+#include "llvm/Bitcode/SerializationFwd.h"
+
 namespace clang {
 
 /// LangOptions - This class keeps track of the various options that can be
@@ -46,6 +48,12 @@ struct LangOptions {
     CXXOperatorNames = PascalStrings = Boolean = WritableStrings = 0;
     LaxVectorConversions = 0;
   }
+  
+  /// Emit - Emit this LangOptions object to bitcode.
+  void Emit(llvm::Serializer& S) const;
+  
+  /// Read - Read new values for this LangOption object from bitcode.
+  void Read(llvm::Deserializer& S);  
 };
 
 }  // end namespace clang