// gdcmDictEntry
-
+//-----------------------------------------------------------------------------
#include "gdcmDictSet.h"
#include "gdcmUtil.h"
#include <fstream>
#endif
#define PUB_DICT_FILENAME "dicomV3.dic"
+//-----------------------------------------------------------------------------
+// Constructor / Destructor
+/**
+ * \ingroup gdcmDictSet
+ * \brief The Dictionnary Set obtained with this constructor simply
+ * contains the Default Public dictionnary.
+ */
+gdcmDictSet::gdcmDictSet(void) {
+ DictPath = BuildDictPath();
+ std::string PubDictFile = DictPath + PUB_DICT_FILENAME;
+ Dicts[PUB_DICT_NAME] = new gdcmDict(PubDictFile);
+}
+
+/**
+ * \ingroup gdcmDictSet
+ * \brief Destructor
+ */
+gdcmDictSet::~gdcmDictSet() {
+ for (DictSetHT::iterator tag = Dicts.begin(); tag != Dicts.end(); ++tag) {
+ gdcmDict* EntryToDelete = tag->second;
+ if ( EntryToDelete )
+ delete EntryToDelete;
+ }
+ Dicts.clear();
+}
+
+//-----------------------------------------------------------------------------
+// Print
+/**
+ * \ingroup gdcmDictSet
+ * \brief Print, in an informal fashion, the list of all the dictionaries
+ * contained is this gdcmDictSet, along with their respective content.
+ * @param os Output stream used for printing.
+ */
+void gdcmDictSet::Print(std::ostream& os) {
+ for (DictSetHT::iterator dict = Dicts.begin(); dict != Dicts.end(); ++dict){
+ os << "Printing dictionary " << dict->first << std::endl;
+ dict->second->Print(os);
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Public
/**
* \ingroup gdcmDictSet
* \brief Consider all the entries of the public dicom dictionnary.
* - 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 od thhe dictionnary
+ * 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 :-(
- *
+ * *
* @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.
return Result;
}
-/**
- * \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
- * to "../Dicts/".
- */
-std::string gdcmDictSet::BuildDictPath(void) {
- std::string ResultPath;
- const char* EnvPath = (char*)0;
- EnvPath = getenv("GDCM_DICT_PATH");
- if (EnvPath && (strlen(EnvPath) != 0)) {
- ResultPath = EnvPath;
- if (ResultPath[ResultPath.length() -1] != '/' )
- ResultPath += '/';
- dbg.Verbose(1, "gdcmDictSet::BuildDictPath:",
- "Dictionary path set from environnement");
- } else
- ResultPath = PUB_DICT_PATH;
- return ResultPath;
-}
-
-/**
- * \ingroup gdcmDictSet
- * \brief The Dictionnary Set obtained with this constructor simply
- * contains the Default Public dictionnary.
- */
-gdcmDictSet::gdcmDictSet(void) {
- DictPath = BuildDictPath();
- std::string PubDictFile = DictPath + PUB_DICT_FILENAME;
- Dicts[PUB_DICT_NAME] = new gdcmDict(PubDictFile);
-}
-
-gdcmDictSet::~gdcmDictSet() {
- for (DictSetHT::iterator tag = Dicts.begin(); tag != Dicts.end(); ++tag) {
- gdcmDict* EntryToDelete = tag->second;
- if ( EntryToDelete )
- delete EntryToDelete;
- }
- Dicts.clear();
-}
-
/**
* \ingroup gdcmDictSet
* \brief Loads a dictionary from a specified file, and add it
*/
void gdcmDictSet::LoadDictFromFile(std::string FileName, DictKey Name) {
gdcmDict *NewDict = new gdcmDict(FileName);
- Dicts[Name] = NewDict;
-}
-
-/**
- * \ingroup gdcmDictSet
- * \brief Print, in an informal fashion, the list of all the dictionaries
- * contained is this gdcmDictSet, along with their respective content.
- * @param os Output stream used for printing.
- */
-void gdcmDictSet::Print(std::ostream& os) {
- for (DictSetHT::iterator dict = Dicts.begin(); dict != Dicts.end(); ++dict){
- os << "Printing dictionary " << dict->first << std::endl;
- dict->second->Print(os);
- }
+ AppendDict(NewDict,Name);
}
/**
* \ingroup gdcmDictSet
* \brief Retrieve the specified dictionary (when existing) from this
* gdcmDictSet.
- * @param DictName The synbolic name of the searched dictionary.
+ * @param DictName The symbolic name of the searched dictionary.
* \result The retrieved dictionary.
*/
gdcmDict * gdcmDictSet::GetDict(DictKey DictName) {
gdcmDict * gdcmDictSet::GetDefaultPubDict() {
return GetDict(PUB_DICT_NAME);
}
+
+/**
+ * \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
+ * to "../Dicts/".
+ * @return path to directory containing the dictionnaries
+ */
+std::string gdcmDictSet::BuildDictPath(void) {
+ std::string ResultPath;
+ const char* EnvPath = (char*)0;
+ EnvPath = getenv("GDCM_DICT_PATH");
+ if (EnvPath && (strlen(EnvPath) != 0)) {
+ ResultPath = EnvPath;
+ if (ResultPath[ResultPath.length() -1] != '/' )
+ ResultPath += '/';
+ dbg.Verbose(1, "gdcmDictSet::BuildDictPath:",
+ "Dictionary path set from environnement");
+ } else
+ ResultPath = PUB_DICT_PATH;
+ return ResultPath;
+}
+
+//-----------------------------------------------------------------------------
+// Protected
+bool gdcmDictSet::AppendDict(gdcmDict* NewDict,DictKey Name)
+{
+ Dicts[Name] = NewDict;
+ return(true);
+}
+
+//-----------------------------------------------------------------------------
+// Private
+
+//-----------------------------------------------------------------------------
+
+