X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmSQItem.cxx;h=c2481956493c5d8000a7e1f35f85c8261fa23811;hb=4beda181275414e5cba990113f8d16424b2c09e6;hp=62e506771508224ce7ddb841603af16380b2a3f4;hpb=233c8b3ebb1aee6b1be6723d842eb2241b9ffb91;p=gdcm.git diff --git a/src/gdcmSQItem.cxx b/src/gdcmSQItem.cxx index 62e50677..c2481956 100644 --- a/src/gdcmSQItem.cxx +++ b/src/gdcmSQItem.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSQItem.cxx,v $ Language: C++ - Date: $Date: 2004/12/03 17:13:18 $ - Version: $Revision: 1.39 $ + Date: $Date: 2005/01/05 15:38:28 $ + Version: $Revision: 1.44 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,8 +21,10 @@ #include "gdcmValEntry.h" #include "gdcmBinEntry.h" #include "gdcmGlobal.h" +#include "gdcmDictSet.h" #include "gdcmUtil.h" #include "gdcmDebug.h" + #include namespace gdcm @@ -58,9 +60,8 @@ SQItem::~SQItem() /* * \brief canonical Printer */ - void SQItem::Print(std::ostream& os) - { - os << "S "; +void SQItem::Print(std::ostream& os) +{ std::ostringstream s; if (SQDepthLevel > 0) @@ -79,7 +80,7 @@ SQItem::~SQItem() bool PrintEndLine = true; os << s.str(); - Entry->SetPrintLevel(2); + Entry->SetPrintLevel(PrintLevel); Entry->Print(os); if ( SeqEntry* seqEntry = dynamic_cast(Entry) ) { @@ -178,7 +179,7 @@ bool SQItem::SetEntryByNumber(std::string const & val, uint16_t group, continue; } - if ( ( group < (*i)->GetGroup() ) + if ( ( group < (*i)->GetGroup() ) ||( group == (*i)->GetGroup() && element < (*i)->GetElement()) ) { // instead of ReplaceOrCreateByNumber @@ -186,41 +187,23 @@ bool SQItem::SetEntryByNumber(std::string const & val, uint16_t group, ValEntry* entry = 0; TagKey key = DictEntry::TranslateToKey(group, element); - if ( ! PtagHT->count(key)) + // we assume a Public Dictionnary *is* loaded + Dict *pubDict = Global::GetDicts()->GetDefaultPubDict(); + // if the invoked (group,elem) doesn't exist inside the Dictionary + // we create a VirtualDictEntry + DictEntry *dictEntry = pubDict->GetDictEntryByNumber(group, element); + if (dictEntry == NULL) { - // we assume a Public Dictionnary *is* loaded - Dict *pubDict = Global::GetDicts()->GetDefaultPubDict(); - // if the invoked (group,elem) doesn't exist inside the Dictionary - // we create a VirtualDictEntry - DictEntry *dictEntry = pubDict->GetDictEntryByNumber(group, element); - if (dictEntry == NULL) - { - dictEntry = - Global::GetDicts()->NewVirtualDictEntry(group, element, - "UN", "??", "??"); - } - // we assume the constructor didn't fail - entry = new ValEntry(dictEntry); - /// \todo - /// ---- - /// better we don't assume too much ! - /// SQItem is now used to describe any DICOMDIR related object - } - else - { - DocEntry* foundEntry = PtagHT->find(key)->second; - entry = dynamic_cast(foundEntry); - if (!entry) - { - dbg.Verbose(0, "SQItem::SetEntryByNumber: docEntries" - " contains non ValEntry occurences"); - } - } + dictEntry = + Global::GetDicts()->NewVirtualDictEntry(group, element, + "UN", GDCM_UNKNOWN, GDCM_UNKNOWN); + } + // we assume the constructor didn't fail + entry = new ValEntry(dictEntry); if (entry) { entry->SetValue(val); } - entry->SetLength(val.length()); DocEntries.insert(i,entry); return true; @@ -231,7 +214,6 @@ bool SQItem::SetEntryByNumber(std::string const & val, uint16_t group, { entry->SetValue(val); } - (*i)->SetLength(val.length()); return true; } }