X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDictSet.cxx;h=ecef7934c3d3988d3e096d8da821c8af10f22017;hb=9e28d2fada4642e5848b6ef609afcc24ce4799b4;hp=60f837e298c41d289f098b02b1fbd7c8f43244c5;hpb=95e43356511d138225d8f718f632b3e7a8fcc106;p=gdcm.git diff --git a/src/gdcmDictSet.cxx b/src/gdcmDictSet.cxx index 60f837e2..ecef7934 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/05 01:37:08 $ - Version: $Revision: 1.60 $ + Date: $Date: 2005/07/11 20:44:52 $ + Version: $Revision: 1.68 $ 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,33 +96,51 @@ 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; - TagKeyHT::iterator it; + + // Let's follow 'Purify' advice + // + // const std::string tag = DictEntry::TranslateToKey(group,elem) + // + "#" + vr + "#" + vm + "#" + name; +#if FASTTAGKEY && 0 + // FIXME + TagKey tag; + tag.tab[0] = group; + tag.tab[1] = elem; +#else + char res[10]; + sprintf(res,"%04x|%04x", group, elem); + ExtendedTagKey tag = res; + tag += "#" + vr + "#" + vm + "#" + name; +#endif + + ExtendedTagKeyHT::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( + ExtendedTagKeyHT::value_type(tag, ent) ); + entry = &(VirtualEntries.find(tag)->second); } return entry; @@ -134,7 +153,7 @@ DictEntry *DictSet::NewVirtualDictEntry( uint16_t group, Dict *DictSet::GetFirstEntry() { ItDictHt = Dicts.begin(); - if( ItDictHt != Dicts.end() ) + if ( ItDictHt != Dicts.end() ) return ItDictHt->second; return NULL; } @@ -164,22 +183,22 @@ Dict *DictSet::GetNextEntry() std::string DictSet::BuildDictPath() { std::string resultPath; - const char *envPath = 0; + const char *envPath; envPath = getenv("GDCM_DICT_PATH"); if (envPath && (strlen(envPath) != 0)) { resultPath = envPath; - if ( resultPath[resultPath.length()-1] != '/' ) - { - resultPath += '/'; - } gdcmWarningMacro( "Dictionary path set from environnement"); } else { resultPath = PUB_DICT_PATH; } + if ( resultPath[resultPath.length()-1] != '/' ) + { + resultPath += '/'; + } return resultPath; }