gdcmDictEntry.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program: GDCM (Grassroots DICOM). A DICOM library
00004 
00005   Copyright (c) 2006-2011 Mathieu Malaterre
00006   All rights reserved.
00007   See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE.  See the above copyright notice for more information.
00012 
00013 =========================================================================*/
00014 #ifndef GDCMDICTENTRY_H
00015 #define GDCMDICTENTRY_H
00016 
00017 #include "gdcmVR.h"
00018 #include "gdcmVM.h"
00019 
00020 #include <string>
00021 #include <iostream>
00022 #include <iomanip>
00023 
00024 namespace gdcm
00025 {
00036 class GDCM_EXPORT DictEntry
00037 {
00038 public:
00039   DictEntry(const char *name = "", const char *keyword = "", VR const &vr = VR::INVALID, VM const &vm = VM::VM0, bool ret = false):
00040     Name(name),
00041     Keyword(keyword),
00042     ValueRepresentation(vr),
00043     ValueMultiplicity(vm),
00044     Retired(ret),
00045     GroupXX(false),
00046     ElementXX(false)
00047   {
00048   }
00049 
00050   friend std::ostream& operator<<(std::ostream& _os, const DictEntry &_val);
00051 
00053   const VR &GetVR() const { return ValueRepresentation; }
00054   void SetVR(const VR & vr) { ValueRepresentation = vr; }
00055 //  bool IsValid() const { return ValueRepresentation != VR::VR_END; }
00056 //    !Name.empty() /*&& ValueRepresentation && ValueMultiplicity*/; }
00057 
00059   const VM &GetVM() const { return ValueMultiplicity; }
00060   void SetVM(VM const & vm) { ValueMultiplicity = vm; }
00061 
00063   const char *GetName() const { return Name.c_str(); }
00064   void SetName(const char* name) { Name = name; }
00065 
00067   const char *GetKeyword() const { return Keyword.c_str(); }
00068   void SetKeyword(const char* keyword) { Keyword = keyword; }
00069 
00071   bool GetRetired() const { return Retired; }
00072   void SetRetired(bool retired) { Retired = retired; }
00073 
00074   // <entry group="50xx" element="0005" vr="US" vm="1" retired="true" version="3">
00076   void SetGroupXX(bool v) { GroupXX = v; }
00077 
00078   // <entry group="0020" element="31xx" vr="CS" vm="1-n" retired="true" version="2">
00080   void SetElementXX(bool v) { ElementXX = v; }
00081 
00084   bool IsUnique() const { return ElementXX == false && GroupXX == false; }
00085 
00086 private:
00087   //
00088   static bool CheckKeywordAgainstName(const char *name, const char *keyword);
00089 
00090 private:
00091   std::string Name;
00092   std::string Keyword;
00093   VR ValueRepresentation;
00094   VM ValueMultiplicity;
00095   bool Retired : 1;
00096   bool GroupXX : 1;
00097   bool ElementXX : 1;
00098 };
00099 
00100 #if 0
00101 class GDCM_EXPORT PrivateDictEntry : public DictEntry
00102 {
00103 public:
00104   PrivateDictEntry(const char *name = "", VR::VRType const &vr = VR::INVALID, VM::VMType const &vm = VM::VM0 , bool ret = false, const char *owner = ""):DictEntry(name,vr,vm,ret),Owner(owner) {}
00105   PrivateDictEntry(const char *name, const char *vr, const char *vm):DictEntry(name,vr,vm) {}
00106 
00107   const char *GetOwner() const { return Owner.c_str(); }
00108   void SetOwner(const char *owner) { Owner = owner; }
00109 
00110 private:
00111   // SIEMENS MED, GEMS_PETD_01 ...
00112   std::string Owner;
00113 };
00114 #endif
00115 
00116 //-----------------------------------------------------------------------------
00117 inline std::ostream& operator<<(std::ostream& os, const DictEntry &val)
00118 {
00119   if( val.Name.empty() )
00120     {
00121     os << "[No name]";
00122     }
00123   else
00124     {
00125     os << val.Name;
00126     }
00127   if( val.Keyword.empty() )
00128     {
00129     os << "[No keyword]";
00130     }
00131   else
00132     {
00133     os << val.Keyword;
00134     }
00135   os << "\t" << val.ValueRepresentation << "\t" << val.ValueMultiplicity;
00136   if( val.Retired )
00137     {
00138     os << "\t(RET)";
00139     }
00140   return os;
00141 }
00142 
00143 } // end namespace gdcm
00144 
00145 #endif //GDCMDICTENTRY_H

Generated on Mon Jul 29 2013 11:24:15 for GDCM by doxygen 1.7.1
SourceForge.net Logo