X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDocEntrySet.cxx;h=d1856ef67c83a871272652d625d5ba197900e09d;hb=9835a0e10786c0ba67194217ddc97ee00e89d00d;hp=9f4d7c421f19d071010da68f8b989db31eecd100;hpb=3e82e8b67eddf5d4b95b6aa2a2e2615aced4c452;p=gdcm.git diff --git a/src/gdcmDocEntrySet.cxx b/src/gdcmDocEntrySet.cxx index 9f4d7c42..d1856ef6 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/02/02 10:02:17 $ - Version: $Revision: 1.51 $ + Date: $Date: 2005/02/17 11:03:32 $ + Version: $Revision: 1.56 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -129,7 +129,7 @@ BinEntry *DocEntrySet::GetBinEntry(uint16_t group, uint16_t elem) DocEntry *currentEntry = GetDocEntry(group, elem); if ( !currentEntry ) { - gdcmVerboseMacro( "No corresponding BinEntry " << std::hex << group << + gdcmWarningMacro( "No corresponding BinEntry " << std::hex << group << "," << elem); return NULL; } @@ -150,7 +150,7 @@ SeqEntry *DocEntrySet::GetSeqEntry(uint16_t group, uint16_t elem) DocEntry *currentEntry = GetDocEntry(group, elem); if ( !currentEntry ) { - gdcmVerboseMacro( "No corresponding SeqEntry " << std::hex << group << + gdcmWarningMacro( "No corresponding SeqEntry " << std::hex << group << "," << elem); return NULL; } @@ -172,7 +172,7 @@ bool DocEntrySet::SetValEntry(std::string const &content, ValEntry *entry = GetValEntry(group, elem); if (!entry ) { - gdcmVerboseMacro( "No corresponding ValEntry " << std::hex << group << + gdcmWarningMacro( "No corresponding ValEntry " << std::hex << group << "," << elem << " element (try promotion first)."); return false; } @@ -194,7 +194,7 @@ bool DocEntrySet::SetBinEntry(uint8_t *content, int lgth, BinEntry *entry = GetBinEntry(group, elem); if (!entry ) { - gdcmVerboseMacro( "No corresponding ValEntry " << std::hex << group << + gdcmWarningMacro( "No corresponding ValEntry " << std::hex << group << "," << elem << " element (try promotion first)."); return false; } @@ -252,7 +252,7 @@ ValEntry *DocEntrySet::InsertValEntry(std::string const &value, TagName const &vr ) { ValEntry *valEntry = 0; - DocEntry *currentEntry = GetDocEntry( group, elem); + DocEntry *currentEntry = GetDocEntry( group, elem ); if (currentEntry) { @@ -268,7 +268,7 @@ ValEntry *DocEntrySet::InsertValEntry(std::string const &value, { if( !RemoveEntry(currentEntry) ) { - gdcmVerboseMacro( "Removal of previous DocEntry failed."); + gdcmWarningMacro( "Removal of previous DocEntry failed."); return NULL; } @@ -278,11 +278,11 @@ ValEntry *DocEntrySet::InsertValEntry(std::string const &value, // Create a new valEntry if necessary if( !valEntry ) { - valEntry = NewValEntry(group, elem, vr); + valEntry = NewValEntry( group, elem, vr ); if ( !AddEntry(valEntry) ) { - gdcmVerboseMacro("AddEntry failed although this is a creation."); + gdcmWarningMacro("AddEntry failed although this is a creation."); delete valEntry; return NULL; @@ -294,11 +294,12 @@ ValEntry *DocEntrySet::InsertValEntry(std::string const &value, return valEntry; } -/* +/** * \brief Modifies the value of a given Header Entry (Dicom Element) * when it exists. Create it with the given value when unexistant. * A copy of the binArea is made to be kept in the Document. * @param binArea (binary) value to be set + * @param lgth length of the Bin Area we want to set * @param group Group number of the Entry * @param elem Element number of the Entry * @param vr V(alue) R(epresentation) of the Entry -if private Entry- @@ -310,7 +311,7 @@ BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea, int lgth, TagName const &vr ) { BinEntry *binEntry = 0; - DocEntry *currentEntry = GetDocEntry( group, elem); + DocEntry *currentEntry = GetDocEntry( group, elem ); // Verify the currentEntry if (currentEntry) @@ -327,7 +328,7 @@ BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea, int lgth, { if( !RemoveEntry(currentEntry) ) { - gdcmVerboseMacro( "Removal of previous DocEntry failed."); + gdcmWarningMacro( "Removal of previous DocEntry failed."); return NULL; } @@ -341,7 +342,7 @@ BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea, int lgth, if ( !AddEntry(binEntry) ) { - gdcmVerboseMacro( "AddEntry failed allthough this is a creation."); + gdcmWarningMacro( "AddEntry failed although this is a creation."); delete binEntry; return NULL; @@ -370,8 +371,8 @@ BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea, int lgth, return binEntry; } -/* - * \brief Modifies the value of a given Header Entry (Dicom Element) +/** + * \brief Modifies the value of a given Doc Entry (Dicom Element) * when it exists. Creates it when unexistant. * @param group Group number of the Entry * @param elem Element number of the Entry @@ -381,7 +382,7 @@ BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea, int lgth, SeqEntry *DocEntrySet::InsertSeqEntry(uint16_t group, uint16_t elem) { SeqEntry *seqEntry = 0; - DocEntry *currentEntry = GetDocEntry( group, elem); + DocEntry *currentEntry = GetDocEntry( group, elem ); // Verify the currentEntry if( currentEntry ) @@ -390,15 +391,14 @@ SeqEntry *DocEntrySet::InsertSeqEntry(uint16_t group, uint16_t elem) // Verify the VR if( seqEntry ) - if( seqEntry->GetVR()!="SQ" ) - seqEntry = NULL; + seqEntry = NULL; - // if currentEntry doesn't correspond to the requested valEntry + // if currentEntry doesn't correspond to the requested seqEntry if( !seqEntry ) { if (!RemoveEntry(currentEntry)) { - gdcmVerboseMacro( "Removal of previous DocEntry failed."); + gdcmWarningMacro( "Removal of previous DocEntry failed."); return NULL; } @@ -411,14 +411,19 @@ SeqEntry *DocEntrySet::InsertSeqEntry(uint16_t group, uint16_t elem) if( !AddEntry(seqEntry) ) { - gdcmVerboseMacro( "AddEntry failed allthough this is a creation."); + gdcmWarningMacro( "AddEntry failed although this is a creation."); delete seqEntry; return NULL; } } + + // TODO : Find a trick to insert a SequenceDelimitationItem + // in the SeqEntry, at the end. return seqEntry; } + + /** * \brief Checks if a given Dicom Element exists within the H table @@ -431,22 +436,6 @@ bool DocEntrySet::CheckIfEntryExist(uint16_t group, uint16_t elem ) return GetDocEntry(group,elem)!=NULL; } -/** - * \brief Request a new virtual dict entry to the dict set - * @param group group number of the underlying DictEntry - * @param elem element number of the underlying DictEntry - * @param vr VR (Value Representation) of the underlying DictEntry - * @param vm VM (Value Multiplicity) of the underlying DictEntry - * @param name english name - */ -DictEntry* DocEntrySet::NewVirtualDictEntry( uint16_t group,uint16_t elem, - TagName const & vr, - TagName const & vm, - TagName const & name ) -{ - return Global::GetDicts()->NewVirtualDictEntry(group,elem,vr,vm,name); -} - /** * \brief Build a new Val Entry from all the low level arguments. * Check for existence of dictionary entry, and build @@ -456,7 +445,7 @@ DictEntry* DocEntrySet::NewVirtualDictEntry( uint16_t group,uint16_t elem, * @param vr VR of the new Entry */ ValEntry *DocEntrySet::NewValEntry(uint16_t group,uint16_t elem, - TagName const & vr) + TagName const &vr) { DictEntry *dictEntry = GetDictEntry(group, elem, vr); gdcmAssertMacro(dictEntry); @@ -464,7 +453,7 @@ ValEntry *DocEntrySet::NewValEntry(uint16_t group,uint16_t elem, ValEntry *newEntry = new ValEntry(dictEntry); if (!newEntry) { - gdcmVerboseMacro( "Failed to allocate ValEntry"); + gdcmWarningMacro( "Failed to allocate ValEntry"); return 0; } return newEntry; @@ -488,7 +477,7 @@ BinEntry *DocEntrySet::NewBinEntry(uint16_t group, uint16_t elem, BinEntry *newEntry = new BinEntry(dictEntry); if (!newEntry) { - gdcmVerboseMacro( "Failed to allocate BinEntry"); + gdcmWarningMacro( "Failed to allocate BinEntry"); return 0; } return newEntry; @@ -509,12 +498,28 @@ SeqEntry* DocEntrySet::NewSeqEntry(uint16_t group, uint16_t elem) SeqEntry *newEntry = new SeqEntry( dictEntry ); if (!newEntry) { - gdcmVerboseMacro( "Failed to allocate SeqEntry"); + gdcmWarningMacro( "Failed to allocate SeqEntry"); return 0; } return newEntry; } +/** + * \brief Request a new virtual dict entry to the dict set + * @param group group number of the underlying DictEntry + * @param elem element number of the underlying DictEntry + * @param vr VR (Value Representation) of the underlying DictEntry + * @param vm VM (Value Multiplicity) of the underlying DictEntry + * @param name english name + */ +DictEntry* DocEntrySet::NewVirtualDictEntry( uint16_t group, uint16_t elem, + TagName const &vr, + TagName const &vm, + TagName const &name ) +{ + return Global::GetDicts()->NewVirtualDictEntry(group,elem,vr,vm,name); +} + //----------------------------------------------------------------------------- // Protected /** @@ -532,7 +537,7 @@ DictEntry *DocEntrySet::GetDictEntry(uint16_t group,uint16_t elem) Dict *pubDict = Global::GetDicts()->GetDefaultPubDict(); if (!pubDict) { - gdcmVerboseMacro( "We SHOULD have a default dictionary"); + gdcmWarningMacro( "We SHOULD have a default dictionary"); } else {