comparison 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
comparison
equal deleted inserted replaced
1786:164d78911382 1787:1b1d5470233f
32 32
33 #include "../PrecompiledHeadersServer.h" 33 #include "../PrecompiledHeadersServer.h"
34 #include "DicomFindAnswers.h" 34 #include "DicomFindAnswers.h"
35 35
36 #include "../FromDcmtkBridge.h" 36 #include "../FromDcmtkBridge.h"
37 #include "../ToDcmtkBridge.h"
38 #include "../../Core/OrthancException.h"
39
40 #include <memory>
37 41
38 namespace Orthanc 42 namespace Orthanc
39 { 43 {
40 void DicomFindAnswers::Clear() 44 void DicomFindAnswers::Clear()
41 { 45 {
42 for (size_t i = 0; i < items_.size(); i++) 46 for (size_t i = 0; i < items_.size(); i++)
43 { 47 {
48 assert(items_[i] != NULL);
44 delete items_[i]; 49 delete items_[i];
45 } 50 }
51
52 items_.clear();
46 } 53 }
47 54
48 void DicomFindAnswers::Reserve(size_t size) 55 void DicomFindAnswers::Reserve(size_t size)
49 { 56 {
50 if (size > items_.size()) 57 if (size > items_.size())
51 { 58 {
52 items_.reserve(size); 59 items_.reserve(size);
53 } 60 }
54 } 61 }
55 62
63
64 void DicomFindAnswers::Add(const DicomMap& map)
65 {
66 items_.push_back(new ParsedDicomFile(map));
67 }
68
69 void DicomFindAnswers::Add(ParsedDicomFile& dicom)
70 {
71 items_.push_back(dicom.Clone());
72 }
73
74 void DicomFindAnswers::Add(const char* dicom,
75 size_t size)
76 {
77 items_.push_back(new ParsedDicomFile(dicom, size));
78 }
79
80
81 ParsedDicomFile& DicomFindAnswers::GetAnswer(size_t index) const
82 {
83 if (index < items_.size())
84 {
85 return *items_.at(index);
86 }
87 else
88 {
89 throw OrthancException(ErrorCode_ParameterOutOfRange);
90 }
91 }
92
93
94 void DicomFindAnswers::ToJson(Json::Value& target,
95 size_t index,
96 bool simplify) const
97 {
98 DicomToJsonFormat format = (simplify ? DicomToJsonFormat_Simple : DicomToJsonFormat_Full);
99 GetAnswer(index).ToJson(target, format, DicomToJsonFlags_None, 0);
100 }
101
102
56 void DicomFindAnswers::ToJson(Json::Value& target, 103 void DicomFindAnswers::ToJson(Json::Value& target,
57 bool simplify) const 104 bool simplify) const
58 { 105 {
59 target = Json::arrayValue; 106 target = Json::arrayValue;
60 107
61 for (size_t i = 0; i < GetSize(); i++) 108 for (size_t i = 0; i < GetSize(); i++)
62 { 109 {
63 Json::Value answer(Json::objectValue); 110 Json::Value answer;
64 FromDcmtkBridge::ToJson(answer, GetAnswer(i), simplify); 111 ToJson(answer, i, simplify);
65 target.append(answer); 112 target.append(answer);
66 } 113 }
67 } 114 }
68 } 115 }