]> Creatis software - gdcm.git/blobdiff - src/gdcmDocument.cxx
string "gdcm::Loaded (BinEntry)" replaced by GDCM_BINLOADED
[gdcm.git] / src / gdcmDocument.cxx
index 16adce6fa9f73eb7c9a63c7058b7094c6276c464..954b5e4096bb5e2568a7d5773ed88602d910a021 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDocument.cxx,v $
   Language:  C++
-  Date:      $Date: 2004/09/17 13:11:16 $
-  Version:   $Revision: 1.81 $
+  Date:      $Date: 2004/09/22 10:34:53 $
+  Version:   $Revision: 1.86 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -538,13 +538,10 @@ bool gdcmDocument::CloseFile()
 void gdcmDocument::Write(FILE* fp,FileType filetype)
 {
    /// \todo move the following lines (and a lot of others, to be written)
-   /// to a future function CheckAndCorrectHeader
-   
-   /// WARNING : Si on veut ecrire du DICOM V3 a partir d'un DcmHeader ACR-NEMA
-   /// no way (check : FileType est un champ de gdcmDocument ...)
-   /// a moins de se livrer a un tres complique ajout des champs manquants.
-   /// faire un CheckAndCorrectHeader (?) 
+   /// to a future function CheckAndCorrectHeader  
+   /// (necessary if user wants to write a DICOM V3 file
+   /// starting from an  ACR-NEMA (V2)  gdcmHeader
+
    if (filetype == gdcmImplicitVR) 
    {
       std::string implicitVRTransfertSyntax = UI1_2_840_10008_1_2;
@@ -587,72 +584,6 @@ void gdcmDocument::Write(FILE* fp,FileType filetype)
 
 }
 
-/**
- * \brief   Modifies the value of a given Header Entry (Dicom Element)
- *          when it exists. Create it with the given value when unexistant.
- * @param   value (string) Value to be set
- * @param   group   Group number of the Entry 
- * @param   elem  Element number of the Entry
- * \return  pointer to the modified/created Header Entry (NULL when creation
- *          failed).
- */
-
-/*  
-gdcmValEntry * gdcmDocument::ReplaceOrCreateByNumber(
-                                         std::string const & value, 
-                                         uint16_t group, 
-                                         uint16_t elem )
-{
-   gdcmValEntry* valEntry = 0;
-   gdcmDocEntry* currentEntry = GetDocEntryByNumber( group, elem);
-   
-   if (!currentEntry)
-   {
-      // The entry wasn't present and we simply create the required ValEntry:
-      currentEntry = NewDocEntryByNumber(group, elem);
-      if (!currentEntry)
-      {
-         dbg.Verbose(0, "gdcmDocument::ReplaceOrCreateByNumber: call to"
-                        " NewDocEntryByNumber failed.");
-         return NULL;
-      }
-      valEntry = new gdcmValEntry(currentEntry);
-      if ( !AddEntry(valEntry))
-      {
-         dbg.Verbose(0, "gdcmDocument::ReplaceOrCreateByNumber: AddEntry"
-                        " failed allthough this is a creation.");
-      }
-   }
-   else
-   {
-      valEntry = dynamic_cast< gdcmValEntry* >(currentEntry);
-      if ( !valEntry ) // Euuuuh? It wasn't a ValEntry
-                       // then we change it to a ValEntry ?
-                       // Shouldn't it be considered as an error ?
-      {
-         // We need to promote the gdcmDocEntry to a gdcmValEntry:
-         valEntry = new gdcmValEntry(currentEntry);
-         if (!RemoveEntry(currentEntry))
-         {
-            dbg.Verbose(0, "gdcmDocument::ReplaceOrCreateByNumber: removal"
-                           " of previous DocEntry failed.");
-            return NULL;
-         }
-         if ( !AddEntry(valEntry))
-         {
-            dbg.Verbose(0, "gdcmDocument::ReplaceOrCreateByNumber: adding"
-                           " promoted ValEntry failed.");
-            return NULL;
-         }
-      }
-   }
-
-   SetEntryByNumber(value, group, elem);
-
-   return valEntry;
-}   
-*/
-
 /**
  * \brief   Modifies the value of a given Header Entry (Dicom Element)
  *          when it exists. Create it with the given value when unexistant.
@@ -662,13 +593,7 @@ gdcmValEntry * gdcmDocument::ReplaceOrCreateByNumber(
  * @param   VR  V(alue) R(epresentation) of the Entry -if private Entry-
  * \return  pointer to the modified/created Header Entry (NULL when creation
  *          failed).
- */
- // TODO : write something clever, using default value for VR
- //        to avoid code duplication
- //        (I don't know how to tell NewDocEntryByNumber
- //         that ReplaceOrCreateByNumber  was called with a default value)
+ */ 
 gdcmValEntry * gdcmDocument::ReplaceOrCreateByNumber(
                                          std::string const & value, 
                                          uint16_t group, 
@@ -769,7 +694,7 @@ gdcmBinEntry * gdcmDocument::ReplaceOrCreateByNumber(
 
       if (!dictEntry)
       {
-         currentEntry = NewDocEntryByNumber(group, elem,VR);
+         currentEntry = NewDocEntryByNumber(group, elem, VR);
       }
       else
       {
@@ -923,7 +848,6 @@ std::string gdcmDocument::GetEntryVRByName(TagName const & tagName)
    return elem->GetVR();
 }
 
-
 /**
  * \brief   Searches within Header Entries (Dicom Elements) parsed with 
  *          the public and private dictionaries 
@@ -1086,6 +1010,7 @@ bool gdcmDocument::SetEntryByNumber(void *content,
    gdcmBinEntry* a = (gdcmBinEntry *)TagHT[key];           
    a->SetVoidArea(content);  
    a->SetLength(lgth);
+   a->SetValue(GDCM_BINLOADED);
 
    return true;
 } 
@@ -1189,7 +1114,6 @@ void* gdcmDocument::LoadEntryVoidArea(uint16_t group, uint16_t elem)
    {
       dbg.Verbose(0, "gdcmDocument::LoadEntryVoidArea setting failed.");
    }
-
    return a;
 }
 /**
@@ -1474,6 +1398,7 @@ long gdcmDocument::ParseDES(gdcmDocEntrySet *set,
             // hierarchy and the Key is simply of the form ( group, elem )...
             if (gdcmDocument* dummy = dynamic_cast< gdcmDocument* > ( set ) )
             {
+               (void)dummy;
                newValEntry->SetKey( newValEntry->GetKey() );
             }
             // ...but when "set" is a gdcmSQItem, we are inserting this new
@@ -1514,6 +1439,7 @@ long gdcmDocument::ParseDES(gdcmDocEntrySet *set,
             // form ( group, elem )...
             if (gdcmDocument* dummy = dynamic_cast< gdcmDocument* > ( set ) )
             {
+               (void)dummy;
                newBinEntry->SetKey( newBinEntry->GetKey() );
             }
             // but when "this" is a SQItem, we are inserting this new
@@ -1578,6 +1504,7 @@ long gdcmDocument::ParseDES(gdcmDocEntrySet *set,
          // level of one:
          if (gdcmDocument* dummy = dynamic_cast< gdcmDocument* > ( set ) )
          {
+            (void)dummy;
             newSeqEntry->SetDepthLevel( 1 );
             newSeqEntry->SetKey( newSeqEntry->GetKey() );
          }
@@ -1743,7 +1670,7 @@ void gdcmDocument::LoadDocEntry(gdcmDocEntry* entry)
    // When we find a BinEntry not very much can be done :
    if (gdcmBinEntry* binEntryPtr = dynamic_cast< gdcmBinEntry* >(entry) )
    {
-      s << "gdcm::Loaded (BinEntry)";
+      s << GDCM_BINLOADED;
       binEntryPtr->SetValue(s.str());
       LoadEntryVoidArea(binEntryPtr); // last one, not to erase length !
       return;
@@ -3068,12 +2995,12 @@ void gdcmDocument::BuildFlatHashTableRecurse( TagDocEntryHT& builtHT,
  *        a Dicom header will need to dig in the gdcm internals (which
  *        implies exposing all the internal data structures to the API).
  *        In order to avoid this burden to the user, \ref BuildFlatHashTable
- *        recursively builds a temporary hash table, which olds all the
+ *        recursively builds a temporary hash table, which holds all the
  *        Dicom entries in a flat structure (a \ref TagDocEntryHT i.e. a
  *        std::map<>).
  * \warning Of course there is NO integrity constrain between the 
- *        returned \ref TagDocEntryHT and the \ref gdcmElemenSet used
- *        to build it. Hence if the underlying \ref gdcmElemenSet is
+ *        returned \ref TagDocEntryHT and the \ref gdcmElementSet used
+ *        to build it. Hence if the underlying \ref gdcmElementSet is
  *        altered, then it is the caller responsability to invoke 
  *        \ref BuildFlatHashTable again...
  * @return The flat std::map<> we juste build.