]> Creatis software - gdcm.git/blobdiff - src/gdcmDictEntry.h
Avoid warnings on C/C++ syle comments
[gdcm.git] / src / gdcmDictEntry.h
index 93cf8efc7c867cdab6ed138c8b8c02e5770b60dd..e2cecb8fc17098b7ee3bd3348a1f768fea65d21e 100644 (file)
@@ -1,54 +1,82 @@
-// gdcmDictEntry.h
+/*=========================================================================
+                                                                                
+  Program:   gdcm
+  Module:    $RCSfile: gdcmDictEntry.h,v $
+  Language:  C++
+  Date:      $Date: 2005/11/05 13:24:39 $
+  Version:   $Revision: 1.43 $
+                                                                                
+  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+  l'Image). All rights reserved. See Doc/License.txt or
+  http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
+                                                                                
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+                                                                                
+=========================================================================*/
 
 #ifndef GDCMDICTENTRY_H
 #define GDCMDICTENTRY_H
 
-#include "gdcmCommon.h"
+#include "gdcmDicomEntry.h"
+
+namespace gdcm 
+{
+//-----------------------------------------------------------------------------
+/**
+ * \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)
+ *    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 DicomEntry
+{
+   gdcmTypeMacro(DictEntry);
 
-class GDCM_EXPORT gdcmDictEntry {
-private:
-       guint16 group;    // e.g. 0x0010  // FIXME : s'en sert-on qq part
-       guint16 element;  // e.g. 0x0103  // si ce n'est pour fabriquer la TagKey ?
-       string  vr;       // Value Representation i.e. some clue about the nature
-                         // of the data represented e.g. "FD" short for
-                         // "Floating Point Double"
-       // CLEANME: find the official dicom name for this field !
-       string  fourth;   // Fourth field containing some semantics. (Group Name abbr.)
-       string  name;     // e.g. "Patient_Name"
-       TagKey  key;      // Redundant with (group, element) but we add it
-                         // on efficiency purposes.
-       // DCMTK has many fields for handling a DictEntry (see below). What are the
-       // relevant ones for gdcmlib ?
-       //      struct DBI_SimpleEntry {
-       //         Uint16 upperGroup;
-       //         Uint16 upperElement;
-       //         DcmEVR evr;
-       //         const char* tagName;
-       //         int vmMin;
-       //         int vmMax;
-       //         const char* standardVersion;
-       //         DcmDictRangeRestriction groupRestriction;
-       //         DcmDictRangeRestriction elementRestriction;
-       //       };
 public:
-       gdcmDictEntry(guint16 group, 
-                     guint16 element,
-                     string vr     = "Unknown",
-                     string fourth = "Unknown",
-                     string name   = "Unknown");
-                        
-       // fabrique une 'clĂ©' par concatĂ©nation du numGroupe et du numElement
-       static TagKey TranslateToKey(guint16 group, guint16 element);
-       
-       guint16 GetGroup(void)  { return group; };
-       guint16 GetElement(void){return element;};
-       string  GetVR(void)     {return vr;     };
-       void    SetVR(string);
-       void    SetKey(string k){ key = k;     }
-       bool    IsVrUnknown(void);
-       string  GetFourth(void) {return fourth;};
-       string  GetName(void)   {return name;  };
-       string  GetKey(void)    {return key;   };
-};
+   static DictEntry *New(uint16_t group, uint16_t elem,
+             VRKey const &vr       = GDCM_VRUNKNOWN,
+             TagName const &vm     = GDCM_UNKNOWN,
+             TagName const &name   = GDCM_UNKNOWN);
+
+// Print
+   void Print(std::ostream &os = std::cout, std::string const &indent = "");
+
+// Content of DictEntry
+   virtual void SetVR(VRKey const &vr);
+   virtual void SetVM(TagName const &vm);
+   /// \brief   returns the VM field of the current DictEntry
+   /// @return  The 'Value Multiplicity' field
+   const TagName &GetVM() const { return 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; } 
+
+protected:
+   DictEntry(uint16_t group, uint16_t elem,
+             VRKey const &vr       = GDCM_VRUNKNOWN,
+             TagName const &vm     = GDCM_UNKNOWN,
+             TagName const &name   = GDCM_UNKNOWN);
+
+private:
+   /// \brief Value Multiplicity (e.g. "1", "1-n", "2-n", "6")
+   TagName VM; 
+
+   /// \brief English name of the entry (e.g. "Patient's Name")                   
+   TagName Name;      
+};
+} // end namespace gdcm
+//-----------------------------------------------------------------------------
 #endif