]> Creatis software - gdcm.git/blobdiff - src/gdcmDictEntry.h
ENH: Since HandleOutOfGroup0002 need access to the transfer syntax move the method...
[gdcm.git] / src / gdcmDictEntry.h
index 9a255cd28aaeb0c06aa515b9e91d6b72a011a676..1658bb493753a40015cd8f7f5f6a36b1cd0f1ebc 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDictEntry.h,v $
   Language:  C++
-  Date:      $Date: 2004/10/18 02:35:35 $
-  Version:   $Revision: 1.20 $
+  Date:      $Date: 2005/01/11 15:15:38 $
+  Version:   $Revision: 1.28 $
                                                                                 
   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
 
-#include "gdcmCommon.h"
+#include "gdcmBase.h"
 
 namespace gdcm 
 {
 
 //-----------------------------------------------------------------------------
-/*
- * \defgroup DictEntry
+/**
+ * \ingroup DictEntry
  * \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 Multplicity)
+ *  - the corresponding name in english
  */
-class GDCM_EXPORT DictEntry 
+class GDCM_EXPORT DictEntry : public Base
 {
 public:
    DictEntry(uint16_t group, 
              uint16_t element,
-             TagName const & vr     = "Unknown",
-             TagName const & fourth = "Unknown",
-             TagName const & name   = "Unknown");
+             TagName const &vr     = GDCM_UNKNOWN,
+             TagName const &vm     = GDCM_UNKNOWN,
+             TagName const &name   = GDCM_UNKNOWN);
 
    static TagKey TranslateToKey(uint16_t group, uint16_t element);
 
-   void SetVR(TagName const & vr);
+   void SetVR(TagName const &vr);
+   void SetVM(TagName const &vm);
 
    /// \brief tells if the V(alue) R(epresentation) is known (?!)
    /// @return 
-   bool IsVRUnknown() { return VR == "??"; }
+   bool IsVRUnknown() { return VR == GDCM_UNKNOWN; }
+
+   /// \brief tells if the V(alue) M(ultiplicity) is known (?!)
+   /// @return 
+   bool IsVMUnknown() { return VM == GDCM_UNKNOWN; }
 
    /// \brief  Returns the Dicom Group Number of the current DictEntry
    /// @return the Dicom Group Number
@@ -63,26 +70,24 @@ public:
    /// \brief  Returns the Dicom Value Representation of the current
    ///         DictEntry
    /// @return the Dicom Value Representation
-   const TagName & GetVR() const { return VR; }
+   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; }
+   void SetKey(TagName const &k)  { Key = k; }
  
-   /// \brief   returns the Fourth field of the current DictEntry
-   /// \warning NOT part of the Dicom Standard.
-   ///          May be REMOVED an any time. NEVER use it.
-   /// @return  The Fourth field
-   const TagName & GetFourth() const { return Fourth; } 
+   /// \brief   returns the VM field of the current DictEntry
+   /// @return  The 'Value Multiplicity' field
+   const TagName &GetVM() const { return VM; } 
 
    /// \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; } 
+   const TagName &GetName() const { return Name; } 
  
    /// \brief  Gets the key of the current DictEntry
    /// @return the key.
-   const TagName & GetKey() const { return Key; }
+   const TagName &GetKey() const { return Key; }
 
 private:
    /// \todo FIXME 
@@ -104,18 +109,9 @@ private:
    ///        "Floating Point Double" (see \ref VR)
    TagName VR;
 
-   /**
-    * \brief AVOID using the following fourth field at all costs.
-    * 
-    *  They are at least two good reasons for NOT using fourth:
-    *  - the main reason is that it is NOT part of the 'official'
-    *    Dicom Dictionnary.
-    *  - a second reason is that it is not defined for all the groups.
+   /*
     *  .
-    *  Still it provides some semantics as group name abbreviation that
-    *  can prove of some help when organizing things in an interface.
-    *  For the time being we keep it in gdcm but it migth be removed in
-    *  future releases it proves to be source of confusion.
+    *  Formerly 'Group name abbreviations'
     *  Here is a small dictionary we encountered in "nature":
     *  - CMD      Command        
     *  - META     Meta Information 
@@ -161,7 +157,8 @@ private:
     *  - LLO = Left  Lateral Oblique  
     *  .
     */
-   TagName Fourth; 
+  /// \brief Value Multiplicity (e.g. "1", "1-n", "6")
+   TagName VM; 
 
    /// e.g. "Patient's Name"                    
    TagName Name;