X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FgdcmDocEntrySet.cxx;h=27f028324a4d452120b8b4407b9585cd522b649f;hb=e362e154b84f087750d1ed1f6671a34b3bf5ff7a;hp=7cf048122aa8e6794876eb2b8cf6725d499c5421;hpb=928d3c30e40ab7f3d12bfd038ce8a48befcddce8;p=gdcm.git diff --git a/src/gdcmDocEntrySet.cxx b/src/gdcmDocEntrySet.cxx index 7cf04812..27f02832 100644 --- a/src/gdcmDocEntrySet.cxx +++ b/src/gdcmDocEntrySet.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocEntrySet.cxx,v $ Language: C++ - Date: $Date: 2005/10/21 10:29:51 $ - Version: $Revision: 1.63 $ + Date: $Date: 2005/10/27 09:13:18 $ + Version: $Revision: 1.67 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -154,12 +154,8 @@ SeqEntry *DocEntrySet::GetSeqEntry(uint16_t group, uint16_t elem) { DocEntry *currentEntry = GetDocEntry(group, elem); if ( !currentEntry ) - { - gdcmWarningMacro( "No corresponding SeqEntry " << std::hex << group << - "," << elem); return NULL; - } - + return dynamic_cast(currentEntry); } @@ -286,10 +282,10 @@ DataEntry *DocEntrySet::InsertEntryString(std::string const &value, if ( !AddEntry(dataEntry) ) { gdcmWarningMacro("AddEntry failed although this is a creation."); - - delete dataEntry; + dataEntry->Delete(); return NULL; } + dataEntry->Delete(); } // Set the dataEntry value @@ -345,10 +341,10 @@ DataEntry *DocEntrySet::InsertEntryBinArea(uint8_t *binArea, int lgth, if ( !AddEntry(dataEntry) ) { gdcmWarningMacro( "AddEntry failed although this is a creation."); - - delete dataEntry; + dataEntry->Delete(); return NULL; } + dataEntry->Delete(); } // Set the dataEntry value @@ -414,10 +410,10 @@ SeqEntry *DocEntrySet::InsertSeqEntry(uint16_t group, uint16_t elem) if ( !AddEntry(seqEntry) ) { gdcmWarningMacro( "AddEntry failed although this is a creation."); - - delete seqEntry; + seqEntry->Delete(); return NULL; } + seqEntry->Delete(); } // TODO : Find a trick to insert a SequenceDelimitationItem @@ -443,13 +439,14 @@ bool DocEntrySet::CheckIfEntryExist(uint16_t group, uint16_t elem ) * @param group Group number of the new Entry * @param elem Element number of the new Entry * @param vr V(alue) R(epresentation) of the new Entry + * \remarks The user of this method must destroy the DataEntry when unused */ DataEntry *DocEntrySet::NewDataEntry(uint16_t group,uint16_t elem, VRKey const &vr) { DictEntry *dictEntry = GetDictEntry(group, elem, vr); - DataEntry *newEntry = new DataEntry(dictEntry); + DataEntry *newEntry = DataEntry::New(dictEntry); dictEntry->Unregister(); // GetDictEntry register it if (!newEntry) { @@ -465,12 +462,13 @@ DataEntry *DocEntrySet::NewDataEntry(uint16_t group,uint16_t elem, * a default one when absent. * @param group Group number of the new Entry * @param elem Element number of the new Entry + * \remarks The user of this method must destroy the SeqEntry when unused */ SeqEntry* DocEntrySet::NewSeqEntry(uint16_t group, uint16_t elem) { DictEntry *dictEntry = GetDictEntry(group, elem, "SQ"); - SeqEntry *newEntry = new SeqEntry( dictEntry ); + SeqEntry *newEntry = SeqEntry::New( dictEntry ); dictEntry->Unregister(); // GetDictEntry register it if (!newEntry) { @@ -536,6 +534,7 @@ DictEntry *DocEntrySet::GetDictEntry(uint16_t group, uint16_t elem, { goodEntry = NULL; } + dictEntry->Unregister(); } // Create a new virtual DictEntry if necessary @@ -555,7 +554,6 @@ DictEntry *DocEntrySet::GetDictEntry(uint16_t group, uint16_t elem, { goodEntry->Register(); } - dictEntry->Unregister(); return goodEntry; }