Program: gdcm
Module: $RCSfile: gdcmDocEntryArchive.cxx,v $
Language: C++
- Date: $Date: 2004/11/19 18:49:39 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2004/12/03 20:16:58 $
+ Version: $Revision: 1.4 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmDocEntryArchive.h"
#include "gdcmDebug.h"
+#include "gdcmDocEntry.h"
#include <string>
*/
void DocEntryArchive::Print(std::ostream &os)
{
+ os << "Elements in archives :" << std::endl;
+ for(TagDocEntryHT::iterator it = Archive.begin();
+ it!=Archive.end();
+ ++it)
+ {
+ if(it->second)
+ it->second->Print(os);
+ }
}
//-----------------------------------------------------------------------------
// Save the old DocEntry if any
TagDocEntryHT::iterator it = HeaderHT.find(key);
if( it!=HeaderHT.end() )
+ {
Archive[key] = it->second;
+ }
else
+ {
Archive[key] = NULL;
+ }
// Set the new DocEntry
HeaderHT[key] = newEntry;
return(false);
}
+/**
+ * \brief Replace in the Header a DocEntry by the new DocEntry. The last
+ * DocEntry is kept in archieve
+ * @param newEntry New entry to substitute to an other entry of the Header
+ * @return FALSE when an other DocEntry is already archieved with the same
+ * generalized key, TRUE otherwise
+ */
+bool DocEntryArchive::Push(uint16_t group,uint16_t element)
+{
+ std::string key = DictEntry::TranslateToKey(group,element);
+
+ if( Archive.find(key)==Archive.end() )
+ {
+ // Save the old DocEntry if any
+ TagDocEntryHT::iterator it = HeaderHT.find(key);
+ if( it!=HeaderHT.end() )
+ {
+ Archive[key] = it->second;
+ HeaderHT.erase(it);
+ }
+
+ return(true);
+ }
+ return(false);
+}
+
/**
* \brief Restore in the Header the DocEntry that have the generalized key.
* The old entry is destroyed.
if( restoreIt!=Archive.end() )
{
TagDocEntryHT::iterator restorePos = HeaderHT.find(key);
- if( restoreIt!=HeaderHT.end() )
+ if( restorePos!=HeaderHT.end() )
+ {
delete restorePos->second;
+ }
if( Archive[key] )
+ {
HeaderHT[key] = Archive[key];
+ }
else
+ {
HeaderHT.erase(restorePos);
+ }
Archive.erase(restoreIt);