Mercurial > hg > orthanc
diff OrthancServer/DicomProtocol/DicomFindAnswers.cpp @ 1787:1b1d5470233f worklists
refactoring of DicomFindAnswers
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 18 Nov 2015 15:50:32 +0100 |
parents | b22ba8c5edbe |
children | bdcc1dba4a53 |
line wrap: on
line diff
--- a/OrthancServer/DicomProtocol/DicomFindAnswers.cpp Wed Nov 18 12:00:14 2015 +0100 +++ b/OrthancServer/DicomProtocol/DicomFindAnswers.cpp Wed Nov 18 15:50:32 2015 +0100 @@ -34,6 +34,10 @@ #include "DicomFindAnswers.h" #include "../FromDcmtkBridge.h" +#include "../ToDcmtkBridge.h" +#include "../../Core/OrthancException.h" + +#include <memory> namespace Orthanc { @@ -41,8 +45,11 @@ { for (size_t i = 0; i < items_.size(); i++) { + assert(items_[i] != NULL); delete items_[i]; } + + items_.clear(); } void DicomFindAnswers::Reserve(size_t size) @@ -53,6 +60,46 @@ } } + + void DicomFindAnswers::Add(const DicomMap& map) + { + items_.push_back(new ParsedDicomFile(map)); + } + + void DicomFindAnswers::Add(ParsedDicomFile& dicom) + { + items_.push_back(dicom.Clone()); + } + + void DicomFindAnswers::Add(const char* dicom, + size_t size) + { + items_.push_back(new ParsedDicomFile(dicom, size)); + } + + + ParsedDicomFile& DicomFindAnswers::GetAnswer(size_t index) const + { + if (index < items_.size()) + { + return *items_.at(index); + } + else + { + throw OrthancException(ErrorCode_ParameterOutOfRange); + } + } + + + void DicomFindAnswers::ToJson(Json::Value& target, + size_t index, + bool simplify) const + { + DicomToJsonFormat format = (simplify ? DicomToJsonFormat_Simple : DicomToJsonFormat_Full); + GetAnswer(index).ToJson(target, format, DicomToJsonFlags_None, 0); + } + + void DicomFindAnswers::ToJson(Json::Value& target, bool simplify) const { @@ -60,8 +107,8 @@ for (size_t i = 0; i < GetSize(); i++) { - Json::Value answer(Json::objectValue); - FromDcmtkBridge::ToJson(answer, GetAnswer(i), simplify); + Json::Value answer; + ToJson(answer, i, simplify); target.append(answer); } }