X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDictSet.cxx;h=ecef7934c3d3988d3e096d8da821c8af10f22017;hb=f3cc252fad08c3e8dbc395f2ca7cabf47bf95302;hp=8ec72b614d6ede6eefa1534915623f1493f6e9f9;hpb=3a9e9df62b3198c4f93d1768074b6be828ac7308;p=gdcm.git diff --git a/src/gdcmDictSet.cxx b/src/gdcmDictSet.cxx index 8ec72b61..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/04/05 10:56:25 $ - Version: $Revision: 1.62 $ + 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; }