-gdcmDict* gdcmDictSet::LoadDefaultPubDict(void) {
- string PubDictFile = gdcmDictSet::DictPath + PUB_DICT_FILENAME;
- return new gdcmDict(PubDictFile.c_str());
+/**
+ * \brief Create a DictEntry which will be referenced
+ * in no dictionary
+ * @return virtual entry
+ */
+DictEntry *DictSet::NewVirtualDictEntry( uint16_t group,
+ uint16_t element,
+ TagName vr,
+ TagName vm,
+ TagName name)
+{
+ DictEntry *entry;
+ const std::string tag = DictEntry::TranslateToKey(group,element)
+ + "#" + vr + "#" + vm + "#" + name;
+ TagKeyHT::iterator it;
+
+ it = VirtualEntry.find(tag);
+ if(it != VirtualEntry.end())
+ {
+ entry = &(it->second);
+ }
+ else
+ {
+ DictEntry ent(group, element, vr, vm, name);
+ VirtualEntry.insert(
+ std::map<TagKey, DictEntry>::value_type
+ (tag, ent));
+ entry = &(VirtualEntry.find(tag)->second);
+ }
+
+ return entry;