GDCM
2.0.18
|
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 GDCMMACRO_H 00015 #define GDCMMACRO_H 00016 00017 #include "gdcmTypes.h" 00018 #include "gdcmTag.h" 00019 #include "gdcmMacroEntry.h" 00020 00021 #include <map> 00022 #include <vector> 00023 00024 namespace gdcm 00025 { 00026 00027 class DataSet; 00028 class Usage; 00036 class GDCM_EXPORT Macro 00037 { 00038 public: 00039 typedef std::map<Tag, MacroEntry> MapModuleEntry; 00040 typedef std::vector<std::string> ArrayIncludeMacrosType; 00041 00042 //typedef MapModuleEntry::const_iterator ConstIterator; 00043 //typedef MapModuleEntry::iterator Iterator; 00044 //ConstIterator Begin() const { return ModuleInternal.begin(); } 00045 //Iterator Begin() { return ModuleInternal.begin(); } 00046 //ConstIterator End() const { return ModuleInternal.end(); } 00047 //Iterator End() { return ModuleInternal.end(); } 00048 00049 Macro() {} 00050 friend std::ostream& operator<<(std::ostream& _os, const Macro&_val); 00051 00052 void Clear() { ModuleInternal.clear(); } 00053 00055 void AddMacroEntry(const Tag& tag, const MacroEntry & module) 00056 { 00057 ModuleInternal.insert( 00058 MapModuleEntry::value_type(tag, module)); 00059 } 00060 00063 bool FindMacroEntry(const Tag &tag) const; 00064 const MacroEntry& GetMacroEntry(const Tag &tag) const; 00065 00066 void SetName( const char *name) { Name = name; } 00067 const char *GetName() const { return Name.c_str(); } 00068 00069 // Verify will print on std::cerr for error 00070 // Upon success will return true, false otherwise 00071 bool Verify(const DataSet& ds, Usage const & usage) const; 00072 00073 private: 00074 //Module &operator=(const Module &_val); // purposely not implemented 00075 //Module(const Module &_val); // purposely not implemented 00076 00077 MapModuleEntry ModuleInternal; 00078 std::string Name; 00079 }; 00080 //----------------------------------------------------------------------------- 00081 inline std::ostream& operator<<(std::ostream& _os, const Macro &_val) 00082 { 00083 _os << _val.Name << '\n'; 00084 Macro::MapModuleEntry::const_iterator it = _val.ModuleInternal.begin(); 00085 for(;it != _val.ModuleInternal.end(); ++it) 00086 { 00087 const Tag &t = it->first; 00088 const MacroEntry &de = it->second; 00089 _os << t << " " << de << '\n'; 00090 } 00091 00092 return _os; 00093 } 00094 00095 } // end namespace gdcm 00096 00097 #endif //GDCMMACRO_H