-//===-- 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,
- const std::string &ModuleID,
+
+/// 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