Definition of the Bytecode Handler interface. Subclasses can override just
[oota-llvm.git] / include / llvm / Bytecode / Reader.h
index 6249c45b9a50cc55b5d29d58f56bd33dc6990f9a..1e9fa32bd12309743c17b313502e4dc30d92958b 100644 (file)
@@ -1,6 +1,13 @@
-//===-- llvm/Bytecode/Reader.h - Reader for VM bytecode files ----*- C++ -*--=//
+//===-- llvm/Bytecode/Reader.h - Reader for VM bytecode files ---*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
 //
-// This functionality is implemented by the lib/BytecodeReader library.
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
+//
+// This functionality is implemented by the lib/Bytecode/Reader library.
 // This library is used to read VM bytecode files from an iostream.
 //
 // Note that performance of this library is _crucial_ for performance of the
 #ifndef LLVM_BYTECODE_READER_H
 #define LLVM_BYTECODE_READER_H
 
+#include "llvm/ModuleProvider.h"
 #include <string>
+#include <vector>
 
-class Module;
+namespace llvm {
 
-// Parse and return a class...
-//
-Module *ParseBytecodeFile(const std::string &Filename,
+/// getBytecodeModuleProvider - lazy function-at-a-time loading from a file
+///
+ModuleProvider *getBytecodeModuleProvider(const std::string &Filename);
+
+/// getBytecodeBufferModuleProvider - lazy function-at-a-time loading from a
+/// buffer
+///
+ModuleProvider *getBytecodeBufferModuleProvider(const unsigned char *Buffer,
+                                                unsigned BufferSize,
+                                                const std::string &ModuleID="");
+
+/// ParseBytecodeFile - Parse the given bytecode file
+///
+Module* ParseBytecodeFile(const std::string &Filename,
                           std::string *ErrorStr = 0);
-Module *ParseBytecodeBuffer(const unsigned char *Buffer, unsigned BufferSize);
+
+/// ParseBytecodeBuffer - Parse a given bytecode buffer
+///
+Module* ParseBytecodeBuffer(const unsigned char *Buffer,
+                            unsigned BufferSize,
+                            const std::string &ModuleID = "",
+                            std::string *ErrorStr = 0);
+
+/// ReadArchiveFile - Read bytecode files from the specfied .a file, returning
+/// true on error, or false on success.
+///
+bool ReadArchiveFile(const std::string &Filename,
+                     std::vector<Module*> &Objects,
+                     std::string *ErrorStr = 0);
+
+} // End llvm namespace
 
 #endif