gdcmModule.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program: GDCM (Grassroots DICOM). A DICOM library
00004   Module:  $URL$
00005 
00006   Copyright (c) 2006-2010 Mathieu Malaterre
00007   All rights reserved.
00008   See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 #ifndef GDCMMODULE_H
00016 #define GDCMMODULE_H
00017 
00018 #include "gdcmTypes.h"
00019 #include "gdcmTag.h"
00020 #include "gdcmModuleEntry.h"
00021 
00022 #include <map>
00023 
00024 namespace gdcm
00025 {
00026 
00027 class DataSet;
00028 class Usage;
00029 class Macros;
00037 class GDCM_EXPORT Module
00038 {
00039 public:
00040   typedef std::map<Tag, ModuleEntry> MapModuleEntry;
00041   typedef std::vector<std::string> ArrayIncludeMacrosType;
00042 
00043   //typedef MapModuleEntry::const_iterator ConstIterator;
00044   //typedef MapModuleEntry::iterator Iterator;
00045   //ConstIterator Begin() const { return ModuleInternal.begin(); }
00046   //Iterator Begin() { return ModuleInternal.begin(); }
00047   //ConstIterator End() const { return ModuleInternal.end(); }
00048   //Iterator End() { return ModuleInternal.end(); }
00049 
00050   Module() {}
00051   friend std::ostream& operator<<(std::ostream& _os, const Module &_val);
00052 
00053   void Clear() { ModuleInternal.clear(); }
00054 
00056   void AddModuleEntry(const Tag& tag, const ModuleEntry & module)
00057     {
00058     ModuleInternal.insert(
00059       MapModuleEntry::value_type(tag, module));
00060     }
00061 
00062   void AddMacro(const char *include)
00063     {
00064     ArrayIncludeMacros.push_back( include );
00065     }
00066 
00069   bool FindModuleEntryInMacros(Macros const &macros, const Tag &tag) const;
00070   const ModuleEntry& GetModuleEntryInMacros(Macros const &macros, const Tag &tag) const;
00071 
00072   void SetName( const char *name) { Name = name; }
00073   const char *GetName() const { return Name.c_str(); }
00074 
00075   // Verify will print on std::cerr for error
00076   // Upon success will return true, false otherwise
00077   bool Verify(const DataSet& ds, Usage const & usage) const;
00078 
00079 private:
00080   //Module &operator=(const Module &_val); // purposely not implemented
00081   //Module(const Module &_val); // purposely not implemented
00082 
00083   MapModuleEntry ModuleInternal;
00084   std::string Name;
00085   ArrayIncludeMacrosType ArrayIncludeMacros;
00086 };
00087 //-----------------------------------------------------------------------------
00088 inline std::ostream& operator<<(std::ostream& _os, const Module &_val)
00089 {
00090   _os << _val.Name << '\n';
00091   Module::MapModuleEntry::const_iterator it = _val.ModuleInternal.begin();
00092   for(;it != _val.ModuleInternal.end(); ++it)
00093     {
00094     const Tag &t = it->first;
00095     const ModuleEntry &de = it->second;
00096     _os << t << " " << de << '\n';
00097     }
00098 
00099   return _os;
00100 }
00101 
00102 } // end namespace gdcm
00103 
00104 #endif //GDCMMODULE_H
00105 

Generated on Sat Dec 4 2010 08:58:44 for GDCM by doxygen 1.7.2
SourceForge.net Logo