- char buff[1024];
- TagKey key;
- TagName vr;
- TagName fourth;
- TagName name;
- while (!from.eof()) {
- from >> hex >> group >> element;
- eatwhite(from);
- from.getline(buff, 256, ' ');
- vr = buff;
- eatwhite(from);
- from.getline(buff, 256, ' ');
- fourth = buff;
- from.getline(buff, 256, '\n');
- name = buff;
- gdcmDictEntry * newEntry = new gdcmDictEntry(group, element,
- vr, fourth, name);
- NameHt[name] = newEntry;
- KeyHt[gdcmDictEntry::TranslateToKey(group, element)] = newEntry;
- }
- from.close();
+ char buff[1024];
+ TagKey key;
+ TagName vr;
+ TagName fourth;
+ TagName name;
+ while (!from.eof()) {
+ from >> std::hex >> group >> element;
+ eatwhite(from);
+ from.getline(buff, 256, ' ');
+ vr = buff;
+ eatwhite(from);
+ from.getline(buff, 256, ' ');
+ fourth = buff;
+ from.getline(buff, 256, '\n');
+ name = buff;
+ gdcmDictEntry * newEntry = new gdcmDictEntry(group, element,
+ vr, fourth, name);
+ // FIXME: use AddNewEntry
+ NameHt[name] = newEntry;
+ KeyHt[gdcmDictEntry::TranslateToKey(group, element)] = newEntry;
+ }
+ from.close();
+}
+
+/**
+ * \ingroup gdcmDict
+ * \brief
+ */
+gdcmDict::~gdcmDict() {
+ for (TagKeyHT::iterator tag = KeyHt.begin(); tag != KeyHt.end(); ++tag) {
+ gdcmDictEntry* EntryToDelete = tag->second;
+ if ( EntryToDelete )
+ delete EntryToDelete;
+ }
+ KeyHt.clear();
+ // Since AddNewEntry adds symetrical in both KeyHt and NameHT we can
+ // assume all the pointed gdcmDictEntries are already cleaned-up when
+ // we cleaned KeyHt.
+ NameHt.clear();