//===- TargetRegistry.cpp -------------------------------------------------===//
//
//                     The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include <mcld/Support/TargetRegistry.h>


mcld::TargetRegistry::TargetListTy mcld::TargetRegistry::s_TargetList;

void mcld::TargetRegistry::RegisterTarget(mcld::Target &T)
{
  s_TargetList.push_back(&T);
}

const mcld::Target* mcld::TargetRegistry::lookupTarget(const llvm::Target &pTarget)
{
  mcld::Target *result = 0;
  TargetListTy::const_iterator TIter, TEnd = s_TargetList.end();
  for (TIter=s_TargetList.begin(); TIter!=TEnd; ++TIter) {
    if ((*TIter)->get()==&pTarget) {
      result = (*TIter);
      break;
    }
  }
  return result;
}

const mcld::Target *mcld::TargetRegistry::lookupTarget(const std::string &pTriple,
                                                       std::string &pError) 
{
  const llvm::Target* target = llvm::TargetRegistry::lookupTarget(pTriple, pError);
  if (!target)
    return 0;
  return lookupTarget( *target );
}