Skip to content
Snippets Groups Projects
ADSWorkspaceProvider.cpp 1.37 KiB
Newer Older
#include "MantidVatesAPI/ADSWorkspaceProvider.h"
#include "MantidAPI/AnalysisDataService.h"
#include "MantidAPI/IMDEventWorkspace.h"
#include "MantidAPI/IMDHistoWorkspace.h"
#include "MantidAPI/IMDWorkspace.h"
#include "MantidKernel/Exception.h"

using namespace Mantid::API;

namespace Mantid {
namespace VATES {

template <typename Workspace_Type>
bool ADSWorkspaceProvider<Workspace_Type>::canProvideWorkspace(
    std::string wsName) const {
  bool bCanProvide = false;
  try {
    bCanProvide =
         AnalysisDataService::Instance().retrieveWS<Workspace_Type>(wsName));
  } catch (Mantid::Kernel::Exception::NotFoundError &) {
    bCanProvide = false;
  }
  return bCanProvide;
}
template <typename Workspace_Type>
Mantid::API::Workspace_sptr
ADSWorkspaceProvider<Workspace_Type>::fetchWorkspace(std::string wsName) const {
  return AnalysisDataService::Instance().retrieveWS<Workspace_Type>(wsName);
}
template <typename Workspace_Type>
void ADSWorkspaceProvider<Workspace_Type>::disposeWorkspace(
    std::string wsName) const {
  AnalysisDataService::Instance().remove(wsName);
}
// Templated assembled types.
template class DLLExport ADSWorkspaceProvider<Mantid::API::IMDWorkspace>;
template class DLLExport ADSWorkspaceProvider<Mantid::API::IMDEventWorkspace>;
template class DLLExport ADSWorkspaceProvider<Mantid::API::IMDHistoWorkspace>;
///@endcond