Mercurial > hg > orthanc
diff Plugins/Engine/OrthancPlugins.cpp @ 2210:7bcff7bb7cbf
OrthancPluginFindMatcher
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 09 Dec 2016 18:02:03 +0100 |
parents | 84d1d392a9ab |
children | 028214a95194 |
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp Fri Dec 09 17:20:21 2016 +0100 +++ b/Plugins/Engine/OrthancPlugins.cpp Fri Dec 09 18:02:03 2016 +0100 @@ -2592,6 +2592,49 @@ return true; } + case _OrthancPluginService_CreateFindMatcher: + { + const _OrthancPluginCreateFindMatcher& p = + *reinterpret_cast<const _OrthancPluginCreateFindMatcher*>(parameters); + ParsedDicomFile query(p.query, p.size); + *(p.target) = reinterpret_cast<OrthancPluginFindMatcher*> + (new HierarchicalMatcher(query, Configuration::GetGlobalBoolParameter("CaseSensitivePN", false))); + return true; + } + + case _OrthancPluginService_FreeFindMatcher: + { + const _OrthancPluginFreeFindMatcher& p = + *reinterpret_cast<const _OrthancPluginFreeFindMatcher*>(parameters); + + if (p.matcher == NULL) + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + else + { + delete reinterpret_cast<HierarchicalMatcher*>(p.matcher); + return true; + } + } + + case _OrthancPluginService_FindMatcherIsMatch: + { + const _OrthancPluginFindMatcherIsMatch& p = + *reinterpret_cast<const _OrthancPluginFindMatcherIsMatch*>(parameters); + + if (p.matcher == NULL) + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + else + { + ParsedDicomFile query(p.dicom, p.size); + reinterpret_cast<const HierarchicalMatcher*>(p.matcher)->Match(query); + return true; + } + } + default: return false; }