X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDicomDirElement.cxx;h=b393d5dd00b93fe579af715a671b646f36e63b2b;hb=963480c814326423065a4a02fa1bf8bc1243ae4f;hp=aefcd12d74d9f4d9767e933db051c5e29ac8ca72;hpb=1d69b92978803204089d270599133917d944c651;p=gdcm.git diff --git a/src/gdcmDicomDirElement.cxx b/src/gdcmDicomDirElement.cxx index aefcd12d..b393d5dd 100644 --- a/src/gdcmDicomDirElement.cxx +++ b/src/gdcmDicomDirElement.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDirElement.cxx,v $ Language: C++ - Date: $Date: 2004/10/12 04:35:44 $ - Version: $Revision: 1.20 $ + Date: $Date: 2005/01/18 07:53:42 $ + Version: $Revision: 1.27 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -23,9 +23,10 @@ #include #include + namespace gdcm { - +void FillDefaultDIRDict(DicomDirElement *dde); //----------------------------------------------------------------------------- // Constructor / Destructor @@ -35,61 +36,46 @@ namespace gdcm */ DicomDirElement::DicomDirElement() { - std::string filename = DictSet::BuildDictPath() + std::string(DICT_ELEM); + std::string filename = DictSet::BuildDictPath() + DICT_ELEM; std::ifstream from(filename.c_str()); - dbg.Error(!from, "DicomDirElement::DicomDirElement: can't open dictionary", - filename.c_str()); - - char buff[1024]; - std::string type; - Element elem; - - while (!from.eof()) + if(!from) { - from >> std::ws; - from.getline(buff, 1024, ' '); - type = buff; + gdcmVerboseMacro( "Can't open dictionary" << filename.c_str()); + FillDefaultDIRDict( this ); + } + else + { + char buff[1024]; + std::string type; + Element elem; - if( (type=="metaElem") || (type=="patientElem") || - (type=="studyElem") || (type=="serieElem") || - (type=="imageElem") ) + while (!from.eof()) { - from >> std::hex >> elem.Group >> elem.Elem; - from >> std::ws; - from.getline(buff, 1024, '"'); - from >> std::ws; - from.getline(buff, 1024, '"'); - elem.Value = buff; + from.getline(buff, 1024, ' '); + type = buff; - if( type == "metaElem" ) + if( type == "metaElem" || type == "patientElem" || + type == "studyElem" || type == "serieElem" || + type == "imageElem" ) { - DicomDirMetaList.push_back(elem); - } - else if( type == "patientElem" ) - { - DicomDirPatientList.push_back(elem); - } - else if( type == "studyElem" ) - { - DicomDirStudyList.push_back(elem); - } - else if( type == "serieElem" ) - { - DicomDirSerieList.push_back(elem); - } - else if( type == "imageElem" ) - { - DicomDirImageList.push_back(elem); + from >> std::hex >> elem.Group >> elem.Elem; + + from >> std::ws; + from.getline(buff, 1024, '"'); + from >> std::ws; + from.getline(buff, 1024, '"'); + elem.Value = buff; + + AddNewEntry(type, elem); } + from.getline(buff, 1024, '\n'); } - from.getline(buff, 1024, '\n'); + from.close(); } - from.close(); } /** - * \ingroup DicomDirElement * \brief canonical destructor */ DicomDirElement::~DicomDirElement() @@ -104,7 +90,6 @@ DicomDirElement::~DicomDirElement() //----------------------------------------------------------------------------- // Print /** - * \ingroup DicomDirElement * \brief Print all * \todo add a 'Print Level' check * @param os The output stream to be written to. @@ -157,6 +142,40 @@ void DicomDirElement::Print(std::ostream &os) //----------------------------------------------------------------------------- // Public +/** + * \brief AddNewEntry + * @param type type + * @param elem elem + */ +bool DicomDirElement::AddNewEntry(std::string const &type, + Element const &elem) +{ + if( type == "metaElem" ) + { + DicomDirMetaList.push_back(elem); + } + else if( type == "patientElem" ) + { + DicomDirPatientList.push_back(elem); + } + else if( type == "studyElem" ) + { + DicomDirStudyList.push_back(elem); + } + else if( type == "serieElem" ) + { + DicomDirSerieList.push_back(elem); + } + else if( type == "imageElem" ) + { + DicomDirImageList.push_back(elem); + } + else + { + return false; + } + return true; +} //----------------------------------------------------------------------------- // Protected