]> Creatis software - gdcm.git/blobdiff - src/gdcmDictEntry.h
Fix mistypings
[gdcm.git] / src / gdcmDictEntry.h
index 364dff5fc46406c279ff98ec510c75e25f6ae322..24720c9369e9151fe7a1334cd27c837bd2f51c3e 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDictEntry.h,v $
   Language:  C++
-  Date:      $Date: 2005/01/07 12:42:54 $
-  Version:   $Revision: 1.26 $
+  Date:      $Date: 2007/09/17 12:16:02 $
+  Version:   $Revision: 1.47 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
                                                                                 
 =========================================================================*/
 
-#ifndef GDCMDICTENTRY_H
-#define GDCMDICTENTRY_H
+#ifndef _GDCMDICTENTRY_H_
+#define _GDCMDICTENTRY_H_
 
-#include "gdcmBase.h"
+#include "gdcmRefCounter.h"
+#include "gdcmTagKey.h"
+#include "gdcmVRKey.h"
 
-namespace gdcm 
+namespace GDCM_NAME_SPACE 
 {
-
 //-----------------------------------------------------------------------------
-/*
- * \defgroup DictEntry
+class VRKey;
+class TagKey;
+/**
  * \brief
  * the DictEntry in an element contained by the Dict.
  * It contains :
  *  - the key referenced by the DICOM norm or the constructor (for private keys)
- *  - the corresponding name in english (it's equivalent to a label)
- *  - the owner group
- *  - etc.
+ *    i.e. the Group number
+ *         the Element number
+ *  - the VR (Value Representation)
+ *  - the VM (Value Multiplicity)
+ *  - the corresponding name in english
  */
-class GDCM_EXPORT DictEntry : public Base
+class GDCM_EXPORT DictEntry : public RefCounter
 {
+   gdcmTypeMacro(DictEntry);
+
 public:
-   DictEntry(uint16_t group, 
-             uint16_t element,
-             TagName const &vr     = GDCM_UNKNOWN,
+   static DictEntry *New(uint16_t group, uint16_t elem,
+             VRKey const &vr       = GDCM_VRUNKNOWN,
              TagName const &vm     = GDCM_UNKNOWN,
              TagName const &name   = GDCM_UNKNOWN);
 
-   static TagKey TranslateToKey(uint16_t group, uint16_t element);
+// Print
+   void Print(std::ostream &os = std::cout, std::string const &indent = "");
 
-   void SetVR(TagName const &vr);
-   void SetVM(TagName const &vm);
+   /// \brief  Returns the Dicom Group Number
+   /// @return the Dicom Group Number
+   const uint16_t &GetGroup() const { return Tag[0]; }
+
+   /// \brief  Returns the Dicom Element Number
+   /// @return the Dicom Element Number
+   const uint16_t &GetElement() const { return Tag[1]; }   
 
+   /// \brief  Set the Dicom Value Representation 
+   /// \param vr the Dicom Value Representation
+   virtual void SetVR(VRKey const &vr) { VR = vr; }
+   /// \brief  Returns the Dicom Value Representation 
+   /// @return the Dicom Value Representation
+   const VRKey &GetVR() const { return VR; }
    /// \brief tells if the V(alue) R(epresentation) is known (?!)
    /// @return 
-   bool IsVRUnknown() { return VR == GDCM_UNKNOWN; }
+   bool IsVRUnknown() const { return VR == GDCM_VRUNKNOWN; }
+
+   const TagKey &GetKey() const { return Tag; }
+
+// Key creation
+   static TagKey TranslateToKey(uint16_t group, uint16_t elem);
 
-   /// \brief  Returns the Dicom Group Number of the current DictEntry
-   /// @return the Dicom Group Number
-   uint16_t GetGroup() { return Group; }
-  
-   /// \brief  Returns the Dicom Element Number of the current DictEntry
-   /// @return the Dicom Element Number
-   uint16_t GetElement() { return Element; }
-   /// \brief  Returns the Dicom Value Representation of the current
-   ///         DictEntry
-   /// @return the Dicom Value Representation
-   const TagName &GetVR() const { return VR; }
-   /// \brief   sets the key of the current DictEntry
-   /// @param k New key to be set.
-   void SetKey(TagName const &k)  { Key = k; }
    /// \brief   returns the VM field of the current DictEntry
    /// @return  The 'Value Multiplicity' field
    const TagName &GetVM() const { return VM; } 
+   /// \brief  Set the VM field of the current DictEntry
+   /// \param vm the'Value Multiplicity'
+   virtual void SetVM(TagName const &vm) { VM = vm; }
+   /// \brief tells if the V(alue) M(ultiplicity) is known (?!)
+   /// @return 
+   bool IsVMUnknown() const { return VM == GDCM_UNKNOWN; }
 
    /// \brief  Returns the Dicom Name of the current DictEntry
    ///         e.g. "Patient Name" for Dicom Tag (0x0010, 0x0010) 
    /// @return the Dicom Name
    const TagName &GetName() const { return Name; } 
-   /// \brief  Gets the key of the current DictEntry
-   /// @return the key.
-   const TagName &GetKey() const { return Key; }
 
-private:
-   /// \todo FIXME 
-   ///        where are the group and element used except from building up
-   ///        a TagKey. If the answer is nowhere then there is no need
-   ///        to store the group and element independently.
-   ///
-   ///        --> EVERYWHERE ! The alternate question would be :
-   ///                         What's TagKey used for ?
-   
-   /// DicomGroup number
-   uint16_t Group;   // e.g. 0x0010
+protected:
+   DictEntry(uint16_t group, uint16_t elem,
+             VRKey const &vr       = GDCM_VRUNKNOWN,
+             TagName const &vm     = GDCM_UNKNOWN,
+             TagName const &name   = GDCM_UNKNOWN);
 
-   /// DicomElement number
-   uint16_t Element; // e.g. 0x0103
+   ~DictEntry();
+   
+private:
+   /// Dicom  TagKey. Contains Dicom Group number and Dicom Element number
+   TagKey Tag;
 
    /// \brief Value Representation i.e. some clue about the nature
-   ///        of the data represented e.g. "FD" short for
-   ///        "Floating Point Double" (see \ref VR)
-   TagName VR;
-
-   /*
-    *  .
-    *  Formerly 'Group name abbreviations'
-    *  Here is a small dictionary we encountered in "nature":
-    *  - CMD      Command        
-    *  - META     Meta Information 
-    *  - DIR      Directory
-    *  - ID       ???
-    *  - PAT      Patient
-    *  - ACQ      Acquisition
-    *  - REL      Related
-    *  - IMG      Image
-    *  - SDY      Study
-    *  - VIS      Visit 
-    *  - WAV      Waveform
-    *  - PRC      ???
-    *  - DEV      Device
-    *  - NMI      Nuclear Medicine
-    *  - MED      ???
-    *  - BFS      Basic Film Session
-    *  - BFB      Basic Film Box
-    *  - BIB      Basic Image Box
-    *  - BAB
-    *  - IOB
-    *  - PJ
-    *  - PRINTER
-    *  - RT       Radio Therapy
-    *  - DVH   
-    *  - SSET
-    *  - RES      Results
-    *  - CRV      Curve
-    *  - OLY      Overlays
-    *  - PXL      Pixels
-    *  - DL       Delimiters
-    *  .
-    *
-    *  Other usefull abreviations used for Radiographic view associated with
-    *  Patient Position (0018,5100):
-    *  -  AP = Anterior/Posterior 
-    *  -  PA = Posterior/Anterior 
-    *  -  LL = Left Lateral 
-    *  -  RL = Right Lateral 
-    *  - RLD = Right Lateral Decubitus 
-    *  - LLD = Left  Lateral Decubitus 
-    *  - RLO = Right Lateral Oblique 
-    *  - LLO = Left  Lateral Oblique  
-    *  .
-    */
-  /// \brief Value Multiplicity (e.g. "1", "1-n", "6")
+   ///        of the data represented e.g. 
+   ///        - "FD" short for "Floating Point Double"(see VR)
+   ///        - "PN" short for "Person Name"       
+   VRKey VR;
+   
+   /// \brief Value Multiplicity (e.g. "1", "1-n", "2-n", "6")
    TagName VM; 
 
-   /// e.g. "Patient's Name"                    
+   /// \brief English name of the entry (e.g. "Patient's Name")                   
    TagName Name;      
-
-   /// Redundant with (group, element) but we add it for efficiency purpose.
-   TagKey  Key;
 };
 } // end namespace gdcm
 //-----------------------------------------------------------------------------