- // instead of ReplaceOrCreateByNumber
- // that is a method of gdcmDocument :-(
- gdcmValEntry* Entry = (gdcmValEntry*)0;
- 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 gdcmValEntry(DictEntry);
- /// \todo
- /// ----
- /// better we don't assume too much !
- /// gdcmSQItem is now used to describe any DICOMDIR related object
- } else {
- gdcmDocEntry* FoundEntry = ptagHT->find(key)->second;
- Entry = dynamic_cast<gdcmValEntry*>(FoundEntry);
- if (!Entry)
- dbg.Verbose(0, "gdcmSQItem::SetEntryByNumber: docEntries"
- " contains non gdcmValEntry occurences");
- }
- if (Entry)
- Entry->SetValue(val);
- Entry->SetLength(val.length());
- docEntries.insert(i,Entry);