]> Creatis software - gdcm.git/blobdiff - src/gdcmDocEntrySet.h
Remove useless accesses to the Dicom Dictionnary std::map
[gdcm.git] / src / gdcmDocEntrySet.h
index bcf22dd3199ccb8123e66d546d116ac85c998c3d..a9c98e421b40846d61e51d85a93882125fc1420f 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDocEntrySet.h,v $
   Language:  C++
-  Date:      $Date: 2005/10/19 13:17:05 $
-  Version:   $Revision: 1.59 $
+  Date:      $Date: 2006/04/11 16:03:26 $
+  Version:   $Revision: 1.68 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -19,7 +19,7 @@
 #ifndef GDCMDOCENTRYSET_H
 #define GDCMDOCENTRYSET_H
 
-#include "gdcmBase.h"
+#include "gdcmRefCounter.h"
 #include "gdcmVRKey.h"
 #include "gdcmTagKey.h"
 
@@ -41,49 +41,45 @@ class DictEntry;
  *  - \ref ElementSet is based on the STL map<> container
  * (see \ref ElementSet::TagHT)
  *  - \ref SQItem is based on an STL list container (see \ref ListDocEntry).
+ *
  * Since the syntax for adding a new element to a map<> or a list<>
  * differ, \ref DocEntrySet is designed as an adapter to unify the
  * interfaces of \ref DocEntrySet and \ref ElementSet.
+ *
  * As an illustration of this design, please refer to the implementation
  * of \ref AddEntry (or any pure virtual method) in both derived classes.
  * This adapter unification of interfaces enables the parsing of a
  * DICOM header containing (optionaly heavily nested) sequences to be
  * written recursively [see \ref Document::ParseDES 
- * which calls \ref Document::ParseSQ, which in turns calls 
+ * which calls \ref Document::ParseSQ, which in turn calls 
  * \ref Document::ParseDES ].
  *
  * \note Developpers should strongly resist to the temptation of adding
  *       members to this class since this class is designed as an adapter 
  *       in the form of an abstract base class.
  */
-class GDCM_EXPORT DocEntrySet : public Base
+class GDCM_EXPORT DocEntrySet : public RefCounter
 {
-public:
-   /// Canonical Constructor
-   DocEntrySet();
-   /// Canonical Destructor
-   virtual ~DocEntrySet() {}
+   gdcmTypeMacro(DocEntrySet);
 
+public:
    /// \brief write any type of entry to the entry set
    virtual void WriteContent (std::ofstream *fp, FileType filetype) = 0;
 
-   /// \brief Remove all Entry in the entry set
+   /// \brief Remove all Entry of the current set
    virtual void ClearEntry() = 0;
-   /// \brief adds any type of entry to the entry set
+   /// \brief adds any type of entry to the current set
    virtual bool AddEntry(DocEntry *entry) = 0;
    /// \brief Removes any type of entry out of the entry set, and destroys it
    virtual bool RemoveEntry(DocEntry *entryToRemove) = 0;
-   /// \brief Removes any type of entry out of the entry set, DOESN'T destroy it
-   virtual bool RemoveEntryNoDestroy(DocEntry *entryToRemove) = 0;
-   /// Gets the first entry of any type of set
+   /// \brief Gets the first entry (of any type) of the current set
    virtual DocEntry *GetFirstEntry()=0;
-   /// Gets the next entry of any type of set
+   /// \brief Gets the next entry (of any type) of the current set
    virtual DocEntry *GetNextEntry()=0;
 
    virtual std::string GetEntryString(uint16_t group, uint16_t elem);
    virtual void *GetEntryBinArea(uint16_t group, uint16_t elem);
    virtual int GetEntryLength(uint16_t group, uint16_t elem);
-   virtual std::string GetEntryForcedAsciiValue(uint16_t group, uint16_t elem);
 
    /// \brief Gets any type of DocEntry, identified by its (group,elem)
    virtual DocEntry *GetDocEntry(uint16_t group, uint16_t elem) = 0;
@@ -106,7 +102,7 @@ public:
                                     uint16_t group, uint16_t elem,
                                     VRKey const &vr = GDCM_VRUNKNOWN);
    SeqEntry *InsertSeqEntry(uint16_t group, uint16_t elem);
-   /// tells us if the set contains no entry
+   /// \brief Tells us if the set contains no entry
    virtual bool IsEmpty() = 0;
    virtual bool CheckIfEntryExist(uint16_t group, uint16_t elem);
 
@@ -115,17 +111,18 @@ public:
                          VRKey const &vr = GDCM_VRUNKNOWN);
    SeqEntry *NewSeqEntry(uint16_t group, uint16_t elem);
 
-// DictEntry  related utilities 
-   DictEntry *NewVirtualDictEntry(uint16_t group,uint16_t elem,
-                                  VRKey const &vr     = GDCM_VRUNKNOWN,
-                                  TagName const &vm     = GDCM_UNKNOWN,
-                                  TagName const &name   = GDCM_UNKNOWN );
+   virtual void Copy(DocEntrySet *) {};
 
 protected:
+   /// Canonical Constructor
+   DocEntrySet();
+   /// Canonical Destructor
+   virtual ~DocEntrySet() {}
+
 // DictEntry  related utilities
    DictEntry *GetDictEntry(uint16_t group, uint16_t elem);
-   DictEntry *GetDictEntry(uint16_t group, uint16_t elem,
-                           VRKey const &vr);
//  DictEntry *GetDictEntry(uint16_t group, uint16_t elem,
//                          VRKey const &vr);
    /// To be able to backtrack (Private Sequence, Implicit VR related pb)
    DocEntry *PreviousDocEntry;