32 for (
auto &elem : m_ServiceObjects)
34 elem.second.UngetService(elem.first);
45 const mitk::BaseData *baseData,
const std::string &mimeType, us::ModuleContext *context)
47 if (baseData ==
nullptr)
49 mitkThrow() <<
"FileWriterRegistry::GetReferences was called with null basedata.";
50 std::vector<mitk::FileWriterRegistry::WriterReference> emptyResult;
54 if (context ==
nullptr)
57 std::vector<WriterReference> result;
62 for (std::vector<std::string>::const_iterator clIter = classHierarchy.begin(), clIterEnd = classHierarchy.end();
70 std::vector<WriterReference> refs = context->GetServiceReferences<
IFileWriter>(filter);
71 result.insert(result.end(), refs.begin(), refs.end());
77 us::ModuleContext *context)
82 if (context ==
nullptr)
87 m_ServiceObjects.insert(std::make_pair(writer, serviceObjects));
92 const std::string &mimeType,
93 us::ModuleContext *context)
95 if (baseData ==
nullptr)
97 mitkThrow() <<
"FileWriterRegistry::GetReferences was called with null basedata.";
98 std::vector<mitk::IFileWriter *> emptyResult;
102 if (context ==
nullptr)
105 std::vector<mitk::IFileWriter *> result;
107 std::vector<us::ServiceReference<IFileWriter>> refs;
108 if (mimeType.empty())
116 std::sort(refs.begin(), refs.end());
118 result.reserve(refs.size());
127 m_ServiceObjects.insert(std::make_pair(writer, serviceObjects));
128 result.push_back(writer);
137 m_ServiceObjects.find(writer);
138 if (writerIter != m_ServiceObjects.end())
140 writerIter->second.UngetService(writer);
141 m_ServiceObjects.erase(writerIter);
147 for (
const auto &writer : writers)
void UngetWriter(IFileWriter *writer)
Base of all data objects.
std::vector< IFileWriter * > GetWriters(const BaseData *baseData, const std::string &mimeType, us::ModuleContext *context=us::GetModuleContext())
static std::string PROP_MIMETYPE()
Service property name for the mime-type associated with this file writer.
virtual std::vector< std::string > GetClassHierarchy() const
IFileWriter * GetWriter(const WriterReference &ref, us::ModuleContext *context=us::GetModuleContext())
static std::vector< WriterReference > GetReferences(const BaseData *baseData, us::ModuleContext *context=us::GetModuleContext())
US_Core_EXPORT const std::string & OBJECTCLASS()
static std::string PROP_BASEDATA_TYPE()
Service property name for the supported mitk::BaseData sub-class.
The common interface of all MITK file writers.
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
void UngetWriters(const std::vector< IFileWriter *> &writers)