X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDicomDirPatient.cxx;h=ceeea5b4fe4179e6a699b5712105b98d5c8c3f73;hb=0ad9dae4659b21bfd5c834c1af724eab4dcdf4f6;hp=fb5fa9ac3112170af322cc3c359145568f56317e;hpb=ba78e6c6d47d6db1528e8e88e5ebde7296a26692;p=gdcm.git diff --git a/src/gdcmDicomDirPatient.cxx b/src/gdcmDicomDirPatient.cxx index fb5fa9ac..ceeea5b4 100644 --- a/src/gdcmDicomDirPatient.cxx +++ b/src/gdcmDicomDirPatient.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDirPatient.cxx,v $ Language: C++ - Date: $Date: 2004/12/03 20:16:57 $ - Version: $Revision: 1.21 $ + Date: $Date: 2005/01/23 10:12:33 $ + Version: $Revision: 1.31 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,6 +21,7 @@ #include "gdcmGlobal.h" #include "gdcmDicomDirStudy.h" #include "gdcmSQItem.h" +#include "gdcmDebug.h" namespace gdcm { @@ -29,13 +30,18 @@ namespace gdcm // Constructor / Destructor /** * \brief Constructor - * @param ptagHT pointer to the HTable (DicomDirObject needs it - * to build the HeaderEntries) */ -DicomDirPatient::DicomDirPatient(): +DicomDirPatient::DicomDirPatient(bool empty): DicomDirObject() { + if( !empty ) + { + ListDicomDirStudyElem const &elemList = + Global::GetDicomDirElements()->GetDicomDirPatientElements(); + FillObject(elemList); + } } + /** * \brief Canonical destructor. */ @@ -53,9 +59,10 @@ DicomDirPatient::~DicomDirPatient() // Print /** * \brief Prints the Object - * @return + * @param os ostream to write to + * @param indent Indentation string to be prepended during printing */ -void DicomDirPatient::Print(std::ostream& os) +void DicomDirPatient::Print(std::ostream &os, std::string const & ) { os << "PATIENT" << std::endl; DicomDirObject::Print(os); @@ -69,11 +76,14 @@ void DicomDirPatient::Print(std::ostream& os) } } +//----------------------------------------------------------------------------- +// Public /** * \brief Writes the Object - * @return + * @param fp ofstream to write to + * @param t Type of the File (explicit VR, implicitVR, ...) */ -void DicomDirPatient::WriteContent(std::ofstream* fp, FileType t) +void DicomDirPatient::WriteContent(std::ofstream *fp, FileType t) { DicomDirObject::WriteContent(fp, t); @@ -84,8 +94,6 @@ void DicomDirPatient::WriteContent(std::ofstream* fp, FileType t) (*cc)->WriteContent( fp, t ); } } -//----------------------------------------------------------------------------- -// Public /** * \brief adds a new Patient at the begining of the PatientList @@ -93,16 +101,54 @@ void DicomDirPatient::WriteContent(std::ofstream* fp, FileType t) */ DicomDirStudy* DicomDirPatient::NewStudy() { - ListDicomDirStudyElem const & elemList = - Global::GetDicomDirElements()->GetDicomDirStudyElements(); - - DicomDirStudy* st = new DicomDirStudy(); - st->FillObject(elemList); - - Studies.push_front(st); + DicomDirStudy *st = new DicomDirStudy(); + Studies.push_back(st); return st; } +/** + * \brief Get the first entry while visiting the DicomDirStudy + * \return The first DicomDirStudy if found, otherwhise NULL + */ +DicomDirStudy *DicomDirPatient::GetFirstStudy() +{ + ItStudy = Studies.begin(); + if (ItStudy != Studies.end()) + return *ItStudy; + return NULL; +} + +/** + * \brief Get the next entry while visiting the DicomDirStudies + * \note : meaningfull only if GetFirstEntry already called + * \return The next DicomDirStudies if found, otherwhise NULL + */ +DicomDirStudy *DicomDirPatient::GetNextStudy() +{ + gdcmAssertMacro (ItStudy != Studies.end()) + { + ++ItStudy; + if (ItStudy != Studies.end()) + return *ItStudy; + } + return NULL; +} + +/** + * \brief Get the first entry while visiting the DicomDirStudy + * \return The first DicomDirStudy if found, otherwhise NULL + */ +DicomDirStudy *DicomDirPatient::GetLastStudy() +{ + ItStudy = Studies.end(); + if (ItStudy != Studies.begin()) + { + --ItStudy; + return *ItStudy; + } + return NULL; +} + //----------------------------------------------------------------------------- // Protected @@ -110,5 +156,4 @@ DicomDirStudy* DicomDirPatient::NewStudy() // Private //----------------------------------------------------------------------------- - } // end namespace gdcm