14 #ifndef LLVM_BITCODE_READERWRITER_H
15 #define LLVM_BITCODE_READERWRITER_H
20 class BitstreamWriter;
35 std::string *ErrMsg = 0);
42 DataStreamer *streamer,
44 std::string *ErrMsg = 0);
53 std::string *ErrMsg = 0);
59 std::string *ErrMsg = 0);
75 const unsigned char *BufEnd) {
78 return BufPtr != BufEnd &&
89 const unsigned char *BufEnd) {
92 return BufPtr != BufEnd &&
103 const unsigned char *BufEnd) {
125 const unsigned char *&BufEnd,
126 bool VerifyBufferSize) {
128 KnownHeaderSize = 4*4,
134 if (BufEnd-BufPtr < KnownHeaderSize)
return true;
136 unsigned Offset = ( BufPtr[OffsetField ] |
137 (BufPtr[OffsetField+1] << 8) |
138 (BufPtr[OffsetField+2] << 16) |
139 (BufPtr[OffsetField+3] << 24));
140 unsigned Size = ( BufPtr[SizeField ] |
141 (BufPtr[SizeField +1] << 8) |
142 (BufPtr[SizeField +2] << 16) |
143 (BufPtr[SizeField +3] << 24));
146 if (VerifyBufferSize && Offset+Size >
unsigned(BufEnd-BufPtr))
149 BufEnd = BufPtr+Size;
Module * getLazyBitcodeModule(MemoryBuffer *Buffer, LLVMContext &Context, std::string *ErrMsg=0)
bool isBitcodeWrapper(const unsigned char *BufPtr, const unsigned char *BufEnd)
std::string getBitcodeTargetTriple(MemoryBuffer *Buffer, LLVMContext &Context, std::string *ErrMsg=0)
ModulePass * createBitcodeWriterPass(raw_ostream &Str)
bool isBitcode(const unsigned char *BufPtr, const unsigned char *BufEnd)
bool isRawBitcode(const unsigned char *BufPtr, const unsigned char *BufEnd)
Module * getStreamedBitcodeModule(const std::string &name, DataStreamer *streamer, LLVMContext &Context, std::string *ErrMsg=0)
bool SkipBitcodeWrapperHeader(const unsigned char *&BufPtr, const unsigned char *&BufEnd, bool VerifyBufferSize)
Module * ParseBitcodeFile(MemoryBuffer *Buffer, LLVMContext &Context, std::string *ErrMsg=0)
void WriteBitcodeToFile(const Module *M, raw_ostream &Out)