llvm.org GIT mirror llvm / release_20 lib / Support / PluginLoader.cpp
release_20

Tree @release_20 (Download .tar.gz)

PluginLoader.cpp @release_20

c1b5d09
f976c85
b576c94
 
 
 
f976c85
b576c94
c1b5d09
13a253a
c1b5d09
 
 
13a253a
551ccae
fe6b146
737459d
1a097e3
4b93476
2cdd21c
d0fde30
17aa9d3
4b93476
13a253a
17aa9d3
 
9d90144
17aa9d3
 
e815619
 
17aa9d3
 
 
c1b5d09
4b93476
17aa9d3
 
4b93476
 
17aa9d3
 
 
4b93476
//===-- PluginLoader.cpp - Implement -load command line option ------------===//
//
//                     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 file implements the -load <plugin> command line option handler.
//
//===----------------------------------------------------------------------===//

#define DONT_GET_PLUGIN_LOADER_OPTION
#include "llvm/Support/PluginLoader.h"
#include "llvm/Support/Streams.h"
#include "llvm/System/DynamicLibrary.h"
#include <ostream>
#include <vector>
using namespace llvm;

static std::vector<std::string> *Plugins;

void PluginLoader::operator=(const std::string &Filename) {
  if (!Plugins)
    Plugins = new std::vector<std::string>();

  std::string Error;
  if (sys::DynamicLibrary::LoadLibraryPermanently(Filename.c_str(), &Error)) {
    cerr << "Error opening '" << Filename << "': " << Error
         << "\n  -load request ignored.\n";
  } else {
    Plugins->push_back(Filename);
  }
}

unsigned PluginLoader::getNumPlugins() {
  return Plugins ? Plugins->size() : 0;
}

std::string &PluginLoader::getPlugin(unsigned num) {
  assert(Plugins && num < Plugins->size() && "Asking for an out of bounds plugin");
  return (*Plugins)[num];
}