//===-- PlatformManager.cpp - PlatformManager implementation --------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
///
/// \file
/// Implementation of PlatformManager class internals.
///
//===----------------------------------------------------------------------===//

#include "streamexecutor/PlatformManager.h"

namespace streamexecutor {

PlatformManager::PlatformManager() {
  // TODO(jhen): Register known platforms by name.
  // We have a couple of options here:
  //  * Use build-system flags to set preprocessor macros that select the
  //    appropriate code to include here.
  //  * Use static initialization tricks to have platform libraries register
  //    themselves when they are loaded.
}

Expected<Platform *> PlatformManager::getPlatformByName(llvm::StringRef Name) {
  static PlatformManager Instance;
  auto Iterator = Instance.PlatformsByName.find(Name.lower());
  if (Iterator != Instance.PlatformsByName.end())
    return Iterator->second.get();
  return make_error("no available platform with name " + Name);
}

} // namespace streamexecutor
