Definition of the Bytecode Handler interface. Subclasses can override just
[oota-llvm.git] / include / llvm / Bytecode / Reader.h
index 57df2e9636802fd4fdd1326f7d5c250f6dbef71e..1e9fa32bd12309743c17b313502e4dc30d92958b 100644 (file)
@@ -1,4 +1,11 @@
-//===-- 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 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.
 #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,
+/// 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