- if ( group < (*i)->GetGroup() ||
- (group == (*i)->GetGroup() && element < (*i)->GetElement()) ){
- // instead of ReplaceOrCreateByNumber
- // that is a method of gdcmDocument :-(
- gdcmDocEntry *Entry;
- TagKey key = gdcmDictEntry::TranslateToKey(group, element);
- if ( ! ptagHT->count(key)) {
- // we assume a Public Dictionnary *is* loaded
- gdcmDict *PubDict = gdcmGlobal::GetDicts()->GetDefaultPubDict();
- // if the invoked (group,elem) doesn't exist inside the Dictionary
- // we create a VirtualDictEntry
- gdcmDictEntry *DictEntry = PubDict->GetDictEntryByNumber(group, element);
- if (DictEntry == NULL) {
- DictEntry=gdcmGlobal::GetDicts()->NewVirtualDictEntry(group,element,"UN","??","??");
- }
- // we assume the constructor didn't fail
- Entry = new gdcmDocEntry(DictEntry);
- /// \todo
- /// ----
- /// better we don't assume too much !
- /// gdcmSQItem is now used to describe any DICOMDIR related object
- ///
- } else {
- Entry = ptagHT->find(key)->second;
+ }
+
+ if ( ( group < (*i)->GetGroup() )
+ ||( group == (*i)->GetGroup() && element < (*i)->GetElement()) )
+ {
+ // instead of ReplaceOrCreateByNumber
+ // that is a method of Document :-(
+ 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)
+ {
+ 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<ValEntry*>(foundEntry);
+ if (!entry)
+ {
+ dbg.Verbose(0, "SQItem::SetEntryByNumber: docEntries"
+ " contains non ValEntry occurences");
+ }
+ }
+ if (entry)
+ {
+ entry->SetValue(val);
+ }
+ entry->SetLength(val.length());
+ DocEntries.insert(i,entry);
+
+ return true;
+ }
+ if (group == (*i)->GetGroup() && element == (*i)->GetElement() )
+ {
+ if ( ValEntry* entry = dynamic_cast<ValEntry*>(*i) )
+ {
+ entry->SetValue(val);