24 #include "itksys/SystemTools.hxx" 32 for (
auto &elem : m_ServiceObjects)
34 elem.second.UngetService(elem.first);
42 mitkThrow() <<
"FileReaderRegistry::GetMimeTypeForFile was called with empty path. Returning empty MimeType, " 43 "please report this error to the developers.";
48 if (mimeTypes.empty())
54 return mimeTypes.front();
59 const MimeType &mimeType, us::ModuleContext *context)
61 if (context ==
nullptr)
66 return context->GetServiceReferences<
IFileReader>(filter);
70 us::ModuleContext *context)
72 if (context ==
nullptr)
77 m_ServiceObjects.insert(std::make_pair(reader, serviceObjects));
82 us::ModuleContext *context)
84 if (context ==
nullptr)
87 std::vector<mitk::IFileReader *> result;
92 std::vector<us::ServiceReference<IFileReader>> refs =
GetReferences(mimeType, context);
93 std::sort(refs.begin(), refs.end());
95 result.reserve(refs.size());
104 m_ServiceObjects.insert(std::make_pair(reader, serviceObjects));
105 result.push_back(reader);
114 m_ServiceObjects.find(reader);
115 if (readerIter != m_ServiceObjects.end())
117 readerIter->second.UngetService(reader);
118 m_ServiceObjects.erase(readerIter);
124 for (
const auto &reader : readers)
static IMimeTypeProvider * GetMimeTypeProvider(us::ModuleContext *context=us::GetModuleContext())
Get an IMimeTypeProvider instance.
mitk::IFileReader * GetReader(const ReaderReference &ref, us::ModuleContext *context=us::GetModuleContext())
std::vector< mitk::IFileReader * > GetReaders(const MimeType &mimeType, us::ModuleContext *context=us::GetModuleContext())
static MimeType GetMimeTypeForFile(const std::string &path, us::ModuleContext *context=us::GetModuleContext())
Get the highest ranked mime-type for the given file name.
std::string GetName() const
static std::string PROP_MIMETYPE()
Service property name for the mime-type associated with this file writer.
void UngetReaders(const std::vector< mitk::IFileReader *> &readers)
US_Core_EXPORT const std::string & OBJECTCLASS()
The MimeType class represens a registered mime-type. It is an immutable wrapper for mitk::CustomMimeT...
A RAII helper class for core service objects.
static std::vector< ReaderReference > GetReferences(const MimeType &mimeType, us::ModuleContext *context=us::GetModuleContext())
The common interface for all MITK file readers.
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
virtual std::vector< MimeType > GetMimeTypesForFile(const std::string &filePath) const =0
void UngetReader(mitk::IFileReader *reader)