-// gdcmDictEntry
-//-----------------------------------------------------------------------------
+/*=========================================================================
+
+ Program: gdcm
+ Module: $RCSfile: gdcmDictSet.cxx,v $
+ Language: C++
+ Date: $Date: 2004/07/02 13:55:27 $
+ Version: $Revision: 1.32 $
+
+ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+ l'Image). All rights reserved. See Doc/License.txt or
+ http://www.creatis.insa-lyon.fr/Public/Gdcm/License.htm 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 notices for more information.
+
+=========================================================================*/
+
#include "gdcmDictSet.h"
-#include "gdcmUtil.h"
+#include "gdcmDebug.h"
#include <fstream>
#include <stdlib.h> // For getenv
-#define PUB_DICT_NAME "DicomV3Dict"
-#ifndef PUB_DICT_PATH
-# define PUB_DICT_PATH "../Dicts/"
-#endif
-#define PUB_DICT_FILENAME "dicomV3.dic"
-
//-----------------------------------------------------------------------------
// Constructor / Destructor
/**
gdcmDictSet::gdcmDictSet(void)
{
DictPath = BuildDictPath();
- std::string PubDictFile = DictPath + PUB_DICT_FILENAME;
+ std::string PubDictFile(DictPath);
+ PubDictFile += PUB_DICT_FILENAME; /// MEMORY LEAK std::string::operator+=
Dicts[PUB_DICT_NAME] = new gdcmDict(PubDictFile);
}
* \ingroup gdcmDictSet
* \brief Consider all the entries of the public dicom dictionnary.
* Build all list of all the tag names of all those entries.
- * \sa gdcmDictSet::GetPubDictTagNamesByCategory
+ * \sa gdcmDictSet::GetPubDictTagNamesByCategory
* @return A list of all entries of the public dicom dictionnary.
*/
-std::list<std::string> *gdcmDictSet::GetPubDictTagNames(void)
+std::list<std::string> *gdcmDictSet::GetPubDictEntryNames(void)
{
- return(GetDefaultPubDict()->GetTagNames());
+ return(GetDefaultPubDict()->GetDictEntryNames());
}
/**
* \ingroup gdcmDictSet
- * \brief Consider all the entries of the public dicom dictionnary.
- * Build an hashtable whose keys are the names of the groups
- * (fourth field in each line of dictionary) and whose corresponding
- * values are lists of all the dictionnary entries among that
- * group. Note that apparently the Dicom standard doesn't explicitely
- * define a name (as a string) for each group.
- * A typical usage of this method would be to enable a dynamic
- * configuration of a Dicom file browser: the admin/user can
- * select in the interface which Dicom tags should be displayed.
- * \warning Dicom *doesn't* define any name for any 'categorie'
+ * \brief
+ * - Consider all the entries of the public dicom dictionnary.
+ * - Build an hashtable whose keys are the names of the groups
+ * (fourth field in each line of dictionary) and whose corresponding
+ * values are lists of all the dictionnary entries among that
+ * group. Note that apparently the Dicom standard doesn't explicitely
+ * define a name (as a string) for each group.
+ * - A typical usage of this method would be to enable a dynamic
+ * configuration of a Dicom file browser: the admin/user can
+ * select in the interface which Dicom tags should be displayed.
+ * \warning
+ * - Dicom *doesn't* define any name for any 'categorie'
* (the dictionnary fourth field was formerly NIH defined
- * - and no longer he is-
+ * -and no longer he is-
* and will be removed when Dicom provides us a text file
* with the 'official' Dictionnary, that would be more friendly
* than asking us to perform a line by line check of the dictionnary
* at the beginning of each year to -try to- guess the changes)
- * Therefore : please NEVER use that fourth field :-(
+ * - Therefore : please NEVER use that fourth field :-(
* *
* @return An hashtable: whose keys are the names of the groups and whose
* corresponding values are lists of all the dictionnary entries
* among that group.
*/
-std::map<std::string, std::list<std::string> > *gdcmDictSet::GetPubDictTagNamesByCategory(void)
+std::map<std::string, std::list<std::string> > *gdcmDictSet::GetPubDictEntryNamesByCategory(void)
{
- return(GetDefaultPubDict()->GetTagNamesByCategory());
+ return(GetDefaultPubDict()->GetDictEntryNamesByCategory());
}
/**
* @param Name Symbolic name that be used as identifier of the newly
* created dictionary.
*/
-void gdcmDictSet::LoadDictFromFile(std::string FileName, DictKey Name)
+gdcmDict *gdcmDictSet::LoadDictFromFile(std::string FileName, DictKey Name)
{
gdcmDict *NewDict = new gdcmDict(FileName);
AppendDict(NewDict,Name);
+ return(NewDict);
}
/**
}
/**
- * \ingroup gdcmDictSet
* \brief Retrieve the default reference DICOM V3 public dictionary.
* \result The retrieved default dictionary.
*/
}
/**
- * \ingroup gdcmDictSet
* \brief Create a gdcmDictEntry which will be reference
* in no dictionnary
* @return virtual entry
*/
-gdcmDictEntry *gdcmDictSet::NewVirtualDictEntry(guint16 group, guint16 element,
- std::string vr,std::string fourth,
+gdcmDictEntry *gdcmDictSet::NewVirtualDictEntry(uint16_t group,
+ uint16_t element,
+ std::string vr,
+ std::string fourth,
std::string name)
{
- gdcmDictEntry *entry;
- std::string tag=gdcmDictEntry::TranslateToKey(group,element)+vr;
+ gdcmDictEntry* entry;
+ std::string tag = gdcmDictEntry::TranslateToKey(group,element)
+ + "#" + vr + "#" + fourth + "#" + name;
std::map<std::string,gdcmDictEntry *>::iterator it;
it=virtualEntry.find(tag);
}
/**
- * \ingroup gdcmDictSet
* \brief Obtain from the GDCM_DICT_PATH environnement variable the
* path to directory containing the dictionnaries. When
* the environnement variable is absent the path is defaulted