23 #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION
49 friend std::ostream&
operator<< (std::ostream &os,
const Item &val);
53 NestedDataSet.Clear();
56 template <
typename TDE>
60 NestedDataSet.Insert(de);
62 if( !IsUndefinedLength() )
64 assert( 0 &&
"InsertDataElement" );
70 return NestedDataSet.GetDataElement(t);
75 void SetNestedDataSet(
const DataSet& nested)
77 NestedDataSet = nested;
93 NestedDataSet = val.NestedDataSet;
96 template <
typename TDE,
typename TSwap>
97 std::istream &
Read(std::istream &is) {
100 DataSet &nested = NestedDataSet;
104 if( !TagField.Read<TSwap>(is) )
106 throw Exception(
"Should not happen (item)");
109 #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION
111 if( TagField ==
Tag(0xfeff, 0x00e0)
112 || TagField ==
Tag(0xfeff, 0xdde0) )
117 assert ( TagField ==
Tag(0xfffe, 0xe000)
118 || TagField ==
Tag(0xfffe, 0xe0dd) );
122 assert(0 &&
"Should not happen");
127 if( TagField ==
Tag(0xfffe,0xe0dd) )
129 if( ValueLengthField )
142 else if( ValueLengthField.IsUndefined() )
144 DataSet &nested = NestedDataSet;
147 std::streampos start = is.tellg();
150 nested.template ReadNested<TDE,SwapperDoOp>(is);
159 gdcmWarningMacro(
"Attempt to read nested Item without byteswapping the Value Length." );
162 is.seekg( start, std::ios::cur );
164 nested.template ReadNested<TDE,SwapperNoOp>(is);
167 bsf.SetByteSwapTag(
true);
182 DataSet &nested = NestedDataSet;
185 nested.template ReadWithLength<TDE,SwapperDoOp>(is, ValueLengthField);
193 if( TagField ==
Tag(0x3f3f, 0x3f00) )
198 if( TagField !=
Tag(0xfffe, 0xe000) && TagField !=
Tag(0xfffe, 0xe0dd) )
203 assert( TagField ==
Tag(0xfffe, 0xe000) || TagField ==
Tag(0xfffe, 0xe0dd) );
205 if( !ValueLengthField.Read<TSwap>(is) )
207 assert(0 &&
"Should not happen");
211 if( TagField ==
Tag(0xfffe,0xe0dd) )
214 if( ValueLengthField )
216 gdcmDebugMacro(
"ValueLengthField is not 0 but " << ValueLengthField );
219 else if( ValueLengthField.IsUndefined() )
221 DataSet &nested = NestedDataSet;
224 nested.template ReadNested<TDE,TSwap>(is);
228 assert( !ValueLengthField.IsUndefined() );
229 DataSet &nested = NestedDataSet;
231 assert( nested.IsEmpty() );
232 nested.template ReadWithLength<TDE,TSwap>(is, ValueLengthField);
238 template <
typename TDE,
typename TSwap>
239 const std::ostream &
Write(std::ostream &os)
const {
240 #ifdef GDCM_SUPPORT_BROKEN_IMPLEMENTATION
241 if( TagField ==
Tag(0x3f3f,0x3f00) &&
false )
243 Tag t(0xfffe, 0xe000);
249 assert ( TagField ==
Tag(0xfffe, 0xe000)
250 || TagField ==
Tag(0xfffe, 0xe0dd) );
252 if( TagField ==
Tag(0xfffe, 0xe0dd) )
255 assert( ValueLengthField == 0 );
256 assert( NestedDataSet.Size() == 0 );
258 if( !TagField.Write<TSwap>(os) )
260 assert(0 &&
"Should not happen");
264 if( ValueLengthField.IsUndefined() )
266 if( !ValueLengthField.Write<TSwap>(os) )
268 assert(0 &&
"Should not happen");
276 if( !dummy.
Write<TSwap>(os) )
278 assert(0 &&
"Should not happen");
283 NestedDataSet.Write<TDE,TSwap>(os);
284 if( ValueLengthField.IsUndefined() )
286 const Tag itemDelItem(0xfffe,0xe00d);
287 itemDelItem.
Write<TSwap>(os);
289 zero.
Write<TSwap>(os);
303 return NestedDataSet.FindDataElement( t );
318 val.NestedDataSet.
Print( os,
"\t" );
326 #include "gdcmItem.txx"