Mercurial > hg > orthanc
diff OrthancServer/Sources/Search/DatabaseLookup.cpp @ 4977:dad71e6da406 more-tags
pre-filtering studies without ModalitiesInStudies first
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 20 Apr 2022 11:32:31 +0200 |
parents | b7ce2bb6b881 |
children | d0c34145320c |
line wrap: on
line diff
--- a/OrthancServer/Sources/Search/DatabaseLookup.cpp Wed Apr 13 14:58:58 2022 +0200 +++ b/OrthancServer/Sources/Search/DatabaseLookup.cpp Wed Apr 20 11:32:31 2022 +0200 @@ -326,4 +326,45 @@ return false; } + + bool DatabaseLookup::GetConstraint(const DicomTagConstraint*& constraint, const DicomTag& tag) const + { + for (size_t i = 0; i < constraints_.size(); i++) + { + assert(constraints_[i] != NULL); + if (constraints_[i]->GetTag() == tag) + { + constraint = constraints_.at(i); + return true; + } + } + + return false; + } + + + void DatabaseLookup::RemoveConstraint(const DicomTag& tag) + { + for (size_t i = 0; i < constraints_.size(); i++) + { + assert(constraints_[i] != NULL); + if (constraints_[i]->GetTag() == tag) + { + delete constraints_[i]; + constraints_.erase(constraints_.begin() + i); + } + } + } + + DatabaseLookup* DatabaseLookup::Clone() const + { + std::unique_ptr<DatabaseLookup> clone(new DatabaseLookup()); + + for (size_t i = 0; i < constraints_.size(); i++) + { + clone->AddConstraint(*(new DicomTagConstraint(*constraints_[i]))); + } + + return clone.release(); + } }