Mercurial > hg > orthanc
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 } |