7 gdcmDict::gdcmDict(const char* FileName) {
8 std::ifstream from(FileName);
9 dbg.Error(!from, "gdcmDict::gdcmDict: can't open dictionary", FileName);
10 guint16 group, element;
11 // CLEANME : use defines for all those constants
13 TagKey key, vr, fourth, name;
15 from >> hex >> group >> element;
17 from.getline(buff, 256, ' ');
20 from.getline(buff, 256, ' ');
22 from.getline(buff, 256, '\n');
24 gdcmDictEntry * newEntry = new gdcmDictEntry(group, element,
26 entries[gdcmDictEntry::TranslateToKey(group, element)] = newEntry;
31 void gdcmDict::Print(ostream& os) {
32 for (TagHT::iterator tag = entries.begin(); tag != entries.end(); ++tag){
34 os << "(" << hex << tag->second->GetGroup() << ',';
35 os << hex << tag->second->GetElement() << ") = " << dec;
36 os << tag->second->GetVR() << ", ";
37 os << tag->second->GetFourth() << ", ";
38 os << tag->second->GetName() << "." << endl;
42 // renvoie une ligne de Dictionnaire Dicom à partir de (numGroup, numElement)
44 gdcmDictEntry * gdcmDict::GetTag(guint32 group, guint32 element) {
45 TagKey key = gdcmDictEntry::TranslateToKey(group, element);
46 if ( ! entries.count(key))
47 return (gdcmDictEntry*)0;
48 if (entries.count(key) > 1)
49 dbg.Verbose(0, "gdcmDict::GetTag",
50 "multiple entries for this key (FIXME) !");
51 return entries.find(key)->second;
55 int gdcmDict::ReplaceEntry(gdcmDictEntry* NewEntry) {
57 // au cas ou la NewEntry serait incomplete
58 // Question : cela peut-il se produire ?
60 // --> NON : voir constructeur
62 //key = NewEntry->GetKey();
64 // NewEntry->gdcmDictEntry::SetKey(
65 // gdcmDictEntry::TranslateToKey(NewEntry->GetGroup(), NewEntry->GetElement())
69 entries.erase (NewEntry->gdcmDictEntry::GetKey());
70 entries[ NewEntry->GetKey()] = NewEntry;
72 // Question : Dans quel cas ça peut planter ?
76 int gdcmDict::AddNewEntry(gdcmDictEntry* NewEntry) {
79 key = NewEntry->GetKey();
81 if(entries.count(key) >= 1) {
82 printf("gdcmDict::AddNewEntry %s deja present\n", key.c_str());
85 entries[NewEntry->GetKey()] = NewEntry;
91 int gdcmDict::RemoveEntry(TagKey key) {
92 if(entries.count(key) == 1) {
96 printf("gdcmDict::RemoveEntry %s non trouve\n", key.c_str());
102 int gdcmDict::RemoveEntry (guint16 group, guint16 element) {
104 return( RemoveEntry(gdcmDictEntry::TranslateToKey(group, element)) );