summaryrefslogtreecommitdiff
path: root/lib/Bitcode/Reader/BitcodeReader.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-04-22 06:23:29 +0000
committerChris Lattner <sabre@nondot.org>2007-04-22 06:23:29 +0000
commitcaee0dccffb77a003681345ab3281bcf8684526c (patch)
treee8282488fd3308a78ee33df18bfa21c5f50429ca /lib/Bitcode/Reader/BitcodeReader.h
parentb35ca9db9ce25e6b61aa3eaee41464f647d34899 (diff)
downloadllvm-caee0dccffb77a003681345ab3281bcf8684526c.tar.gz
llvm-caee0dccffb77a003681345ab3281bcf8684526c.tar.bz2
llvm-caee0dccffb77a003681345ab3281bcf8684526c.tar.xz
Initial support for reading bitcode files. They currently only read types,
the type symtab, and global/function protos, and are missing the important size optimization, but it is a place to start. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36330 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bitcode/Reader/BitcodeReader.h')
-rw-r--r--lib/Bitcode/Reader/BitcodeReader.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/Bitcode/Reader/BitcodeReader.h b/lib/Bitcode/Reader/BitcodeReader.h
new file mode 100644
index 0000000000..a92f0ac4c7
--- /dev/null
+++ b/lib/Bitcode/Reader/BitcodeReader.h
@@ -0,0 +1,66 @@
+//===- BitcodeReader.h - Internal BitcodeReader impl ------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file was developed by Chris Lattner and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This header defines the BitcodeReader class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef BITCODE_READER_H
+#define BITCODE_READER_H
+
+#include "llvm/AbstractTypeUser.h"
+#include "llvm/ModuleProvider.h"
+#include "../LLVMBitCodes.h"
+#include <vector>
+
+namespace llvm {
+ class BitstreamReader;
+
+class BitcodeReader : public ModuleProvider {
+ const char *ErrorString;
+
+ std::vector<PATypeHolder> TypeList;
+public:
+ virtual ~BitcodeReader() {}
+
+ virtual void FreeState() {}
+
+ virtual bool materializeFunction(Function *F, std::string *ErrInfo = 0) {
+ // FIXME: TODO
+ return false;
+ }
+
+ virtual Module *materializeModule(std::string *ErrInfo = 0) {
+ // FIXME: TODO
+ //if (ParseAllFunctionBodies(ErrMsg))
+ // return 0;
+ return TheModule;
+ }
+
+ bool Error(const char *Str) {
+ ErrorString = Str;
+ return true;
+ }
+ const char *getErrorString() const { return ErrorString; }
+
+ /// @brief Main interface to parsing a bitcode buffer.
+ /// @returns true if an error occurred.
+ bool ParseBitcode(unsigned char *Buf, unsigned Length,
+ const std::string &ModuleID);
+private:
+ const Type *getTypeByID(unsigned ID, bool isTypeTable = false);
+
+ bool ParseModule(BitstreamReader &Stream, const std::string &ModuleID);
+ bool ParseTypeTable(BitstreamReader &Stream);
+ bool ParseTypeSymbolTable(BitstreamReader &Stream);
+};
+
+} // End llvm namespace
+
+#endif