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
#include <fstream>
#include <iostream>
+
namespace gdcm
{
-
+void FillDefaultDIRDict(DicomDirElement *dde);
//-----------------------------------------------------------------------------
// Constructor / Destructor
*/
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()
//-----------------------------------------------------------------------------
// Print
/**
- * \ingroup DicomDirElement
* \brief Print all
* \todo add a 'Print Level' check
* @param os The output stream to be written to.
//-----------------------------------------------------------------------------
// 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