/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #ifndef GDCMVALUEIO_TXX #define GDCMVALUEIO_TXX #include "gdcmValueIO.h" #include "gdcmExplicitDataElement.h" #include "gdcmImplicitDataElement.h" #include "gdcmSequenceOfFragments.h" #include "gdcmSequenceOfItems.h" #include "gdcmByteValue.h" namespace gdcm_ns { template std::istream &ValueIO::Read(std::istream &is, Value& _v, bool readvalues) { Value* v = &_v; if( ByteValue *bv = dynamic_cast(v) ) { bv->template Read(is,readvalues); } else if( SequenceOfItems *si = dynamic_cast(v) ) { si->template Read(is,readvalues); } else if( SequenceOfFragments *sf = dynamic_cast(v) ) { sf->template Read(is,readvalues); } else { assert( 0 && "error" ); } return is; } template const std::ostream &ValueIO::Write(std::ostream &os, const Value& _v) { const Value* v = &_v; if( const ByteValue *bv = dynamic_cast(v) ) { bv->template Write(os); } else if( const SequenceOfItems *si = dynamic_cast(v) ) { //VL dummy = si->ComputeLength(); //assert( /*dummy.IsUndefined() ||*/ dummy == si->GetLength() ); si->template Write(os); } else if( const SequenceOfFragments *sf = dynamic_cast(v) ) { sf->template Write(os); } else { assert( 0 && "error" ); } return os; } } // end namespace gdcm_ns #endif // GDCMVALUEIO_TXX