Program: gdcm
Module: $RCSfile: gdcmDocEntrySet.cxx,v $
Language: C++
- Date: $Date: 2005/02/01 10:29:55 $
- Version: $Revision: 1.50 $
+ 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
*/
void *DocEntrySet::GetEntryBinArea(uint16_t group, uint16_t elem)
{
- BinEntry *entry = GetBinEntry(group,elem);
+ BinEntry *entry = GetBinEntry(group, elem);
if( entry )
return entry->GetBinArea();
return 0;
*/
int DocEntrySet::GetEntryLength(uint16_t group, uint16_t elem)
{
- DocEntry *entry = GetDocEntry(group,elem);
+ DocEntry *entry = GetDocEntry(group, elem);
if( entry )
return entry->GetLength();
return -1;
*/
std::string DocEntrySet::GetEntryVR(uint16_t group, uint16_t elem)
{
- DocEntry *entry = GetDocEntry(group,elem);
+ DocEntry *entry = GetDocEntry(group, elem);
if( entry )
return entry->GetVR();
return GDCM_UNFOUND;
DocEntry *currentEntry = GetDocEntry(group, elem);
if ( !currentEntry )
{
- gdcmVerboseMacro( "No corresponding BinEntry " << std::hex << group <<
+ gdcmWarningMacro( "No corresponding BinEntry " << std::hex << group <<
"," << elem);
return NULL;
}
DocEntry *currentEntry = GetDocEntry(group, elem);
if ( !currentEntry )
{
- gdcmVerboseMacro( "No corresponding SeqEntry " << std::hex << group <<
+ gdcmWarningMacro( "No corresponding SeqEntry " << std::hex << group <<
"," << elem);
return NULL;
}
* @param group group number of the Dicom Element to modify
* @param elem element number of the Dicom Element to modify
*/
-bool DocEntrySet::SetValEntry(std::string const& content,
+bool DocEntrySet::SetValEntry(std::string const &content,
uint16_t group, uint16_t elem)
{
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;
}
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;
}
TagName const &vr )
{
ValEntry *valEntry = 0;
- DocEntry *currentEntry = GetDocEntry( group, elem);
+ DocEntry *currentEntry = GetDocEntry( group, elem );
if (currentEntry)
{
{
if( !RemoveEntry(currentEntry) )
{
- gdcmVerboseMacro( "Removal of previous DocEntry failed.");
+ gdcmWarningMacro( "Removal of previous DocEntry failed.");
return NULL;
}
// 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;
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-
* \return pointer to the modified/created Header Entry (NULL when creation
* failed).
*/
-BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea,int lgth,
+BinEntry *DocEntrySet::InsertBinEntry(uint8_t *binArea, int lgth,
uint16_t group, uint16_t elem,
TagName const &vr )
{
BinEntry *binEntry = 0;
- DocEntry *currentEntry = GetDocEntry( group, elem);
+ DocEntry *currentEntry = GetDocEntry( group, elem );
// Verify the currentEntry
if (currentEntry)
{
if( !RemoveEntry(currentEntry) )
{
- gdcmVerboseMacro( "Removal of previous DocEntry failed.");
+ gdcmWarningMacro( "Removal of previous DocEntry failed.");
return NULL;
}
if ( !AddEntry(binEntry) )
{
- gdcmVerboseMacro( "AddEntry failed allthough this is a creation.");
+ gdcmWarningMacro( "AddEntry failed although this is a creation.");
delete binEntry;
return NULL;
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
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 )
// 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;
}
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
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
* @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);
ValEntry *newEntry = new ValEntry(dictEntry);
if (!newEntry)
{
- gdcmVerboseMacro( "Failed to allocate ValEntry");
+ gdcmWarningMacro( "Failed to allocate ValEntry");
return 0;
}
return newEntry;
* @param elem element number of the new Entry
* @param vr VR of the new Entry
*/
-BinEntry *DocEntrySet::NewBinEntry(uint16_t group,uint16_t elem,
- TagName const & vr)
+BinEntry *DocEntrySet::NewBinEntry(uint16_t group, uint16_t elem,
+ TagName const &vr)
{
DictEntry *dictEntry = GetDictEntry(group, elem, vr);
gdcmAssertMacro(dictEntry);
BinEntry *newEntry = new BinEntry(dictEntry);
if (!newEntry)
{
- gdcmVerboseMacro( "Failed to allocate BinEntry");
+ gdcmWarningMacro( "Failed to allocate BinEntry");
return 0;
}
return newEntry;
* @param group group number of the new Entry
* @param elem element number of the new Entry
*/
-SeqEntry* DocEntrySet::NewSeqEntry(uint16_t group,uint16_t elem)
+SeqEntry* DocEntrySet::NewSeqEntry(uint16_t group, uint16_t elem)
{
DictEntry *dictEntry = GetDictEntry(group, elem, "SQ");
gdcmAssertMacro(dictEntry);
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
/**
Dict *pubDict = Global::GetDicts()->GetDefaultPubDict();
if (!pubDict)
{
- gdcmVerboseMacro( "We SHOULD have a default dictionary");
+ gdcmWarningMacro( "We SHOULD have a default dictionary");
}
else
{
* @return Corresponding DictEntry when it exists, NULL otherwise.
*/
DictEntry *DocEntrySet::GetDictEntry(uint16_t group, uint16_t elem,
- TagName const & vr)
+ TagName const &vr)
{
DictEntry *dictEntry = GetDictEntry(group,elem);
DictEntry *goodEntry = dictEntry;