]> Creatis software - gdcm.git/blobdiff - ChangeLog
* DEVELOPPER: added a proposition of coding style.
[gdcm.git] / ChangeLog
index adc27f6f3a4d5e8c5c1ed9ddaca451c907a58773..4a9d478620f3d71f82b57d0706244c0921f5f763 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,140 @@
+2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * DEVELOPPER: added a proposition of coding style.
+   * src/gdcmDocEntry.h: removed every inline declaration (for test of 
+     coding style).
+
+2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * gdcmDocEntry::PrintCommonPart() and ::WriteCommonPart() removed.
+     Use the gdcmDocEntry::Print() and Write() instead.
+   * src/gdcmDocument.cxx: bug fix.
+
+2004-06-22 Jean-Pierre Roux
+   In order : to write Sequences, whatever their imbrication level, 
+                : to allow user to create his own Sequences
+       a lot of modif where necessary (adding, moving, or virtualising methods)
+
+WARNING : save your own sources *before* cvs up !
+       
+       - gdcmBinEntry
+         ADD virtual void Write(FILE *fp, FileType filetype);
+         
+   - gdcmDocEntry
+         ADD virtual void Write(FILE *fp, FileType filetype);
+         ADD void gdcmDocEntry::WriteCommonPart(FILE *fp, FileType filetype);
+         
+       - gdcmDocEntrySet
+         ADD virtual void Write (FILE *fp, FileType filetype)=0;
+         ADD   virtual gdcmDocEntry *GetDocEntryByNumber(guint16 group,guint16 element) = 0;
+     ADD gdcmDocEntry *GetDocEntryByName(std::string name);
+     ADD virtual std::string GetEntryByNumber(guint16 group,guint16 element) = 0;
+     ADD std::string GetEntryByName(TagName name);                      
+     ADD gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
+                                            guint16 element,
+                                            std::string vr     = "unkn",
+                                            std::string fourth = "unkn",
+                                            std::string name   = "unkn"); 
+         ADD gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element);                                                                                                 
+     ADD gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element);    
+     ADD gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element); 
+     ADD gdcmDocEntry *NewDocEntryByName  (std::string Name);   
+     ADD gdcmDictEntry *GetDictEntryByName   (std::string Name);
+     ADD gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
+         REM virtual gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element)=0;
+     REM virtual gdcmDocEntry *NewDocEntryByName  (std::string Name)=0;
+         
+       - gdcmDocument
+     ADD virtual bool WriteF(FileType type); // New stuff, with recursive exploration          
+     ADD virtual std::string GetEntryByName    (TagName tagName);
+     ADD virtual std::string GetEntryVRByName  (TagName tagName);
+     REM virtual bool Write(FILE *, FileType);
+     REM virtual void WriteEntryTagVRLength(gdcmDocEntry *tag,
+                                        FILE *_fp, FileType type);
+     REM virtual void WriteEntryValue(gdcmDocEntry *tag,FILE *_fp,FileType type);
+     REM virtual bool WriteEntry(gdcmDocEntry *tag,FILE *_fp,FileType type);
+     REM virtual bool WriteEntries(FILE *_fp,FileType type);
+     REM virtual std::string GetEntryByName    (std::string tagName);
+     REM virtual std::string GetEntryVRByName  (std::string tagName);
+     REM gdcmDictEntry *GetDictEntryByName  (std::string Name);
+     REM gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
+     REM gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
+                                            guint16 element,
+                                            std::string vr     = "unkn",
+                                            std::string fourth = "unkn",
+                                            std::string name   = "unkn");
+     REM gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element);
+     REM gdcmDocEntry *NewDocEntryByName  (std::string Name);
+     REM gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element); 
+     REM gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); 
+                                                                                                                
+       - gdcmElementSet
+         ADD virtual void Write(FILE *fp, FileType filetype);
+         
+   - gdcmSeqEntry
+         ADD virtual void Write(FILE *fp,FileType filetype);
+   - gdcmSQItem
+     ADD virtual void Write(FILE *fp, FileType filetype);
+     ADD virtual std::string GetEntryByNumber(guint16 group, guint16 element);       
+     REM std::string GetEntryByNumber(guint16 group, guint16 element);
+     REM std::string GetEntryByName(TagName name);
+
+   - gdcmValEntry
+        ADD virtual void gdcmValEntry::Write(FILE *fp, FileType filetype); 
+                                 
+2004-06-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+    * Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping.
+      The default constructor invoked by the line
+         gdcmHeader *f1 = new gdcmHeader( header );
+      was gdcmHeader::gdcmHeader(bool) instead of the expected
+      gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool).
+      Hence the parsing wasn't executed... See also below.
+    * src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool)
+      as explicit constructor didn't do the trick to fix the above problem.
+      Could anyone explain why ?
+    * src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now
+      properly calls gdcmValEntry::Print() (that was weed out from 
+      code related to gdcmBinEntry).
+
+2004-06-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+    * In order to fix memory leaks:
+     - Test/TestWriteSimple.cxx: added cleaning of free store through
+       some delete calls.
+     - src/gdcmBinEntry.cxx: fix to avoid SegFault.
+     - src/gdcmDicomDir.[cxx|h]: fixed initialisation in constructor
+       gdcmDicomDir::gdcmDicomDir(bool) [either the constructor itself
+       (through the call to ::AddDicomDirMeta()) or the destructor
+       would crash when deleting uninitialized ::metaElems].
+     - src/gdcmDictEntry.cxx: annotation of ununderstood memory leak.
+     - src/gdcmDocument.cxx:
+       -- ::~gdcmDocument() destructor now cleans up all dictionary entries
+          from dynamic stores.
+       -- ::ParseDES() misplaced deletion of temporary NewDocEntry
+          was causing memory leaks.
+     - src/gdcmSQItem.cxx:
+       -- ::~gdcmSQItem() dummy code cleaned (learned that deletion is
+          cleanly handled with polymophism: sorry but my milage is low).
+       -- ::SetEntryByNumber(string, guint16, guint16) now cleanly allocates
+          a gdcmValENtry, and makes no assumption on type (gdcmDocEntry,
+          gdcmSeqEntry vs gdcmValEntry) of existing entry (when present).
+          This avoids SegFaulting.
+     - src/gdcmSQItem.h: coding style.
+    * Conclusion:
+     - Test/TestWriteSimple still severely sucks. The output image content
+       (when $(GDCMDATA_HOME)/012345.002.050.dcm in input) is brain
+       damaged when displayed with vtkgdcmViewer.
+     - on memory leaks: TestWriteSimple leaks really less (see entry
+       of 2004-06-18 in Changelog file for the call to valgrind).
+     - on segfaults: ctest now passes all the tests but one (no more
+       segfaults).
+    * Erroneous leading white fix:
+     - src/gdcmDict.cxx: getline(from,xxx) doesn't remove the leading
+       white[s] (as opposed to from >> xxx, that removes it [them].
+     - src/gdcmTS.cxx: ditto.
+     - gdcmPython/testSuite.py: dirty related kludge removed.
+    * src/*: remaining references to gdcmParser removed.
+    * src/*[cxx|h]: added copy[way]left header.
+
+
 2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
     * In order to fix writing of dicom files:
      - Test/TestWriteSimple.cxx: a simpler example of writing.