# ReadExplicitLengthSQIVR.cxx

    /*=========================================================================

      Program: GDCM (Grassroots DICOM). A DICOM library
      Module:  $URL$

      Copyright (c) 2006-2010 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.

    =========================================================================*/
    #include "gdcmReader.h"
    #include "gdcmImplicitDataElement.h"
    #include "gdcmDataSet.h"
    #include "gdcmPrivateTag.h"
    #include "gdcmPrivateTag.h"
    #include "gdcmByteValue.h"
    #include "gdcmSequenceOfItems.h"

    using namespace gdcm;

    int main(int argc, char *argv[])
    {
      const char *filename = argv[1];
      gdcm::Reader r;
      r.SetFileName( filename );
      r.Read();

      //gdcm::PrivateTag pt(0xe1,0x42,"ELSCINT1");
      //gdcm::Tag pt(0x88,0x200);
      gdcm::Tag pt(0x8,0x1140);
      DataSet &ds = r.GetFile().GetDataSet();
      const DataElement &de = ds.GetDataElement( pt );

      std::cout << de << std::endl;
      const ByteValue *bv = de.GetByteValue();
      SmartPointer<SequenceOfItems> sqi = new SequenceOfItems;
      sqi->SetLength( bv->GetLength() );
      std::stringstream ss;
      ss.str( std::string( bv->GetPointer(), bv->GetLength() ) );
      sqi->Read<ImplicitDataElement,SwapperNoOp>( ss );

      std::cout << *sqi << std::endl;

      return 0;
    }