Added LLVM project notice to the top of every C++ source file.
[oota-llvm.git] / lib / VMCore / ModuleProvider.cpp
1 //===-- ModuleProvider.cpp - Base implementation for module providers -----===//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
10 // Minimal implementation of the abstract interface for providing a module.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #include "llvm/ModuleProvider.h"
15 #include "llvm/Module.h"
16
17 /// ctor - always have a valid Module
18 ///
19 ModuleProvider::ModuleProvider() : TheModule(0) { }
20
21 /// dtor - when we leave, we take our Module with us
22 ///
23 ModuleProvider::~ModuleProvider() {
24   delete TheModule;
25 }
26
27 /// materializeFunction - make sure the given function is fully read.
28 ///
29 Module* ModuleProvider::materializeModule() {
30   assert(TheModule && "Attempting to materialize an invalid module!");
31
32   for (Module::iterator i = TheModule->begin(), e = TheModule->end();
33        i != e; ++i)
34     materializeFunction(i);
35
36   return TheModule;
37 }