# HG changeset patch # User Sebastien Jodogne # Date 1546873996 -3600 # Node ID 9c71abbff70f251e0e380ca7cdf80da2b377b786 # Parent 717efd0989f95a8279045aabfdd2f8865acfa3bb removing build dependency on plugins diff -r 717efd0989f9 -r 9c71abbff70f OrthancServer/Database/Compatibility/DatabaseLookup.h --- a/OrthancServer/Database/Compatibility/DatabaseLookup.h Sun Jan 06 12:43:19 2019 +0100 +++ b/OrthancServer/Database/Compatibility/DatabaseLookup.h Mon Jan 07 16:13:16 2019 +0100 @@ -43,11 +43,11 @@ class DatabaseLookup : public boost::noncopyable { private: - IDatabaseWrapper& database_; + IDatabaseWrapper& database_; ILookupResources& compatibility_; public: - DatabaseLookup(IDatabaseWrapper& database, + DatabaseLookup(IDatabaseWrapper& database, ILookupResources& compatibility) : database_(database), compatibility_(compatibility) diff -r 717efd0989f9 -r 9c71abbff70f OrthancServer/Database/ResourcesContent.cpp --- a/OrthancServer/Database/ResourcesContent.cpp Sun Jan 06 12:43:19 2019 +0100 +++ b/OrthancServer/Database/ResourcesContent.cpp Mon Jan 07 16:13:16 2019 +0100 @@ -62,47 +62,4 @@ compatibility.SetMetadata(it->resourceId_, it->metadata_, it->value_); } } - - - void ResourcesContent::EncodeForPlugins( - std::vector& identifierTags, - std::vector& mainDicomTags, - std::vector& metadata) const - { - identifierTags.reserve(tags_.size()); - mainDicomTags.reserve(tags_.size()); - metadata.reserve(metadata_.size()); - - for (std::list::const_iterator - it = tags_.begin(); it != tags_.end(); ++it) - { - OrthancPluginResourcesContentTags tmp; - tmp.resource = it->resourceId_; - tmp.group = it->tag_.GetGroup(); - tmp.element = it->tag_.GetElement(); - tmp.value = it->value_.c_str(); - - if (it->isIdentifier_) - { - identifierTags.push_back(tmp); - } - else - { - mainDicomTags.push_back(tmp); - } - } - - for (std::list::const_iterator - it = metadata_.begin(); it != metadata_.end(); ++it) - { - OrthancPluginResourcesContentMetadata tmp; - tmp.resource = it->resourceId_; - tmp.metadata = it->metadata_; - tmp.value = it->value_.c_str(); - metadata.push_back(tmp); - } - - assert(identifierTags.size() + mainDicomTags.size() == tags_.size() && - metadata.size() == metadata_.size()); - } } diff -r 717efd0989f9 -r 9c71abbff70f OrthancServer/Database/ResourcesContent.h --- a/OrthancServer/Database/ResourcesContent.h Sun Jan 06 12:43:19 2019 +0100 +++ b/OrthancServer/Database/ResourcesContent.h Mon Jan 07 16:13:16 2019 +0100 @@ -36,11 +36,10 @@ #include "../../Core/DicomFormat/DicomMap.h" #include "../ServerEnumerations.h" -#include - #include #include + namespace Orthanc { namespace Compatibility @@ -50,7 +49,7 @@ class ResourcesContent : public boost::noncopyable { - private: + public: struct TagValue { int64_t resourceId_; @@ -86,8 +85,12 @@ } }; - std::list tags_; - std::list metadata_; + typedef std::list ListTags; + typedef std::list ListMetadata; + + private: + ListTags tags_; + ListMetadata metadata_; public: void AddMainDicomTag(int64_t resourceId, @@ -118,11 +121,14 @@ // WARNING: The database should be locked with a transaction! void Store(Compatibility::ISetResourcesContent& target) const; - // WARNING: The resulting C structure will contain pointers to the - // current object. Don't delete or modify it! - void EncodeForPlugins( - std::vector& identifierTags, - std::vector& mainDicomTags, - std::vector& metadata) const; + const ListTags& GetListTags() const + { + return tags_; + } + + const ListMetadata& GetListMetadata() const + { + return metadata_; + } }; } diff -r 717efd0989f9 -r 9c71abbff70f OrthancServer/ServerToolbox.cpp --- a/OrthancServer/ServerToolbox.cpp Sun Jan 06 12:43:19 2019 +0100 +++ b/OrthancServer/ServerToolbox.cpp Mon Jan 07 16:13:16 2019 +0100 @@ -39,8 +39,8 @@ #include "../Core/FileStorage/StorageAccessor.h" #include "../Core/Logging.h" #include "../Core/OrthancException.h" -#include "../Plugins/Engine/OrthancPlugins.h" #include "Database/IDatabaseWrapper.h" +#include "Database/ResourcesContent.h" #include "ServerContext.h" #include diff -r 717efd0989f9 -r 9c71abbff70f Plugins/Engine/OrthancPluginDatabase.cpp --- a/Plugins/Engine/OrthancPluginDatabase.cpp Sun Jan 06 12:43:19 2019 +0100 +++ b/Plugins/Engine/OrthancPluginDatabase.cpp Mon Jan 07 16:13:16 2019 +0100 @@ -1294,8 +1294,43 @@ std::vector identifierTags; std::vector mainDicomTags; std::vector metadata; - content.EncodeForPlugins(identifierTags, mainDicomTags, metadata); + + identifierTags.reserve(content.GetListTags().size()); + mainDicomTags.reserve(content.GetListTags().size()); + metadata.reserve(content.GetListMetadata().size()); + + for (ResourcesContent::ListTags::const_iterator + it = content.GetListTags().begin(); it != content.GetListTags().end(); ++it) + { + OrthancPluginResourcesContentTags tmp; + tmp.resource = it->resourceId_; + tmp.group = it->tag_.GetGroup(); + tmp.element = it->tag_.GetElement(); + tmp.value = it->value_.c_str(); + if (it->isIdentifier_) + { + identifierTags.push_back(tmp); + } + else + { + mainDicomTags.push_back(tmp); + } + } + + for (ResourcesContent::ListMetadata::const_iterator + it = content.GetListMetadata().begin(); it != content.GetListMetadata().end(); ++it) + { + OrthancPluginResourcesContentMetadata tmp; + tmp.resource = it->resourceId_; + tmp.metadata = it->metadata_; + tmp.value = it->value_.c_str(); + metadata.push_back(tmp); + } + + assert(identifierTags.size() + mainDicomTags.size() == content.GetListTags().size() && + metadata.size() == content.GetListMetadata().size()); + CheckSuccess(extensions_.setResourcesContent( payload_, identifierTags.size(), diff -r 717efd0989f9 -r 9c71abbff70f Plugins/Include/orthanc/OrthancCDatabasePlugin.h --- a/Plugins/Include/orthanc/OrthancCDatabasePlugin.h Sun Jan 06 12:43:19 2019 +0100 +++ b/Plugins/Include/orthanc/OrthancCDatabasePlugin.h Mon Jan 07 16:13:16 2019 +0100 @@ -701,6 +701,10 @@ typedef struct { + /** + * Extensions since Orthanc 0.9.5 + **/ + /* Output: Use OrthancPluginDatabaseAnswerString() */ OrthancPluginErrorCode (*getAllPublicIdsWithLimit) ( /* outputs */ @@ -746,6 +750,11 @@ const OrthancPluginDicomTag* tag, OrthancPluginIdentifierConstraint constraint); + + /** + * Extensions since Orthanc 1.4.0 + **/ + /* Output: Use OrthancPluginDatabaseAnswerInt64() */ OrthancPluginErrorCode (*lookupIdentifierRange) ( /* outputs */ @@ -775,6 +784,7 @@ uint32_t limit, uint8_t requestSomeInstance); + OrthancPluginErrorCode (*createInstance) ( /* output */ OrthancPluginCreateInstanceResult* output,