BitcodeReader.h revision 47f96bf24687b5068aec7166cb8b3ac33ae964ae
1//===- BitcodeReader.h - Internal BitcodeReader impl ------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file was developed by Chris Lattner and is distributed under 6// the University of Illinois Open Source License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This header defines the BitcodeReader class. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef BITCODE_READER_H 15#define BITCODE_READER_H 16 17#include "llvm/Type.h" 18#include "llvm/ModuleProvider.h" 19#include "llvm/Bitcode/LLVMBitCodes.h" 20#include <vector> 21 22namespace llvm { 23 class BitstreamReader; 24 25class BitcodeReader : public ModuleProvider { 26 const char *ErrorString; 27 28 std::vector<PATypeHolder> TypeList; 29public: 30 virtual ~BitcodeReader() {} 31 32 virtual void FreeState() {} 33 34 virtual bool materializeFunction(Function *F, std::string *ErrInfo = 0) { 35 // FIXME: TODO 36 return false; 37 } 38 39 virtual Module *materializeModule(std::string *ErrInfo = 0) { 40 // FIXME: TODO 41 //if (ParseAllFunctionBodies(ErrMsg)) 42 // return 0; 43 return TheModule; 44 } 45 46 bool Error(const char *Str) { 47 ErrorString = Str; 48 return true; 49 } 50 const char *getErrorString() const { return ErrorString; } 51 52 /// @brief Main interface to parsing a bitcode buffer. 53 /// @returns true if an error occurred. 54 bool ParseBitcode(unsigned char *Buf, unsigned Length, 55 const std::string &ModuleID); 56private: 57 const Type *getTypeByID(unsigned ID, bool isTypeTable = false); 58 59 bool ParseModule(BitstreamReader &Stream, const std::string &ModuleID); 60 bool ParseTypeTable(BitstreamReader &Stream); 61 bool ParseTypeSymbolTable(BitstreamReader &Stream); 62}; 63 64} // End llvm namespace 65 66#endif 67