X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDictSet.cxx;h=646d3374ab2e0dd3c7c9c3373ff0fbbe13c6d467;hb=0a63df7d5417e936948123cb00a80d58addcae66;hp=7256c6b1dccaace89f9ea559a9e043b657453d6e;hpb=3e82e8b67eddf5d4b95b6aa2a2e2615aced4c452;p=gdcm.git diff --git a/src/gdcmDictSet.cxx b/src/gdcmDictSet.cxx index 7256c6b1..646d3374 100644 --- a/src/gdcmDictSet.cxx +++ b/src/gdcmDictSet.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDictSet.cxx,v $ Language: C++ - Date: $Date: 2005/02/02 10:02:16 $ - Version: $Revision: 1.58 $ + Date: $Date: 2005/06/24 10:55:58 $ + Version: $Revision: 1.65 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -20,6 +20,7 @@ #include "gdcmDebug.h" #include #include // For getenv +#include // For sprintf namespace gdcm { @@ -56,7 +57,7 @@ DictSet::~DictSet() Dicts.clear(); // Remove virtual dictionary entries - VirtualEntry.clear(); + VirtualEntries.clear(); } //----------------------------------------------------------------------------- @@ -87,7 +88,7 @@ Dict *DictSet::LoadDictFromFile(std::string const &filename, Dict *DictSet::GetDict(DictKey const &dictName) { DictSetHT::iterator dict = Dicts.find(dictName); - if(dict != Dicts.end()) + if ( dict != Dicts.end() ) { return dict->second; } @@ -95,68 +96,49 @@ Dict *DictSet::GetDict(DictKey const &dictName) } /** - * \brief Create a DictEntry which will be referenced - * in no dictionary + * \brief Create a DictEntry which will be referenced in no dictionary + * @param group Group number of the Entry + * @param elem Element number of the Entry + * @param vr Value Representation of the Entry + * @param vm Value Multiplicity of the Entry + * @param name English name of the Entry * @return virtual entry */ DictEntry *DictSet::NewVirtualDictEntry( uint16_t group, - uint16_t element, + uint16_t elem, TagName vr, TagName vm, TagName name) { DictEntry *entry; - const std::string tag = DictEntry::TranslateToKey(group,element) - + "#" + vr + "#" + vm + "#" + name; + + // Let's follow 'Purify' advice + // + // const std::string tag = DictEntry::TranslateToKey(group,elem) + // + "#" + vr + "#" + vm + "#" + name; + char res[10]; + sprintf(res,"%04x|%04x", group, elem); + std::string tag = res; + tag += "#" + vr + "#" + vm + "#" + name; + TagKeyHT::iterator it; - it = VirtualEntry.find(tag); - if(it != VirtualEntry.end()) + it = VirtualEntries.find(tag); + if ( it != VirtualEntries.end() ) { entry = &(it->second); } else { - DictEntry ent(group, element, vr, vm, name); - VirtualEntry.insert( - std::map::value_type - (tag, ent)); - entry = &(VirtualEntry.find(tag)->second); + DictEntry ent(group, elem, vr, vm, name); + VirtualEntries.insert( + std::map::value_type(tag, ent) ); + entry = &(VirtualEntries.find(tag)->second); } return entry; } -/** - * \brief Obtain from the GDCM_DICT_PATH environnement variable the - * path to directory containing the dictionaries. When - * the environnement variable is absent the path is defaulted - * to "../Dicts/". - * @return path to directory containing the dictionaries - */ -std::string DictSet::BuildDictPath() -{ - std::string resultPath; - const char *envPath = 0; - envPath = getenv("GDCM_DICT_PATH"); - - if (envPath && (strlen(envPath) != 0)) - { - resultPath = envPath; - if ( resultPath[resultPath.length()-1] != '/' ) - { - resultPath += '/'; - } - gdcmVerboseMacro( "Dictionary path set from environnement"); - } - else - { - resultPath = PUB_DICT_PATH; - } - - return resultPath; -} - /** * \brief Get the first entry while visiting the DictSet * \return The first Dict if found, otherwhise NULL @@ -164,7 +146,7 @@ std::string DictSet::BuildDictPath() Dict *DictSet::GetFirstEntry() { ItDictHt = Dicts.begin(); - if( ItDictHt != Dicts.end() ) + if ( ItDictHt != Dicts.end() ) return ItDictHt->second; return NULL; } @@ -184,6 +166,36 @@ Dict *DictSet::GetNextEntry() return NULL; } +/** + * \brief Obtain from the GDCM_DICT_PATH environnement variable the + * path to directory containing the dictionaries. When + * the environnement variable is absent the path is defaulted + * to "../Dicts/". + * @return path to directory containing the dictionaries + */ +std::string DictSet::BuildDictPath() +{ + std::string resultPath; + const char *envPath; + envPath = getenv("GDCM_DICT_PATH"); + + if (envPath && (strlen(envPath) != 0)) + { + resultPath = envPath; + gdcmWarningMacro( "Dictionary path set from environnement"); + } + else + { + resultPath = PUB_DICT_PATH; + } + if ( resultPath[resultPath.length()-1] != '/' ) + { + resultPath += '/'; + } + + return resultPath; +} + //----------------------------------------------------------------------------- // Protected /**