00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkMetaDataDictionary_h
00018 #define __itkMetaDataDictionary_h
00019
00020 #include "itkMetaDataObjectBase.h"
00021 #include <vector>
00022 #include <map>
00023 #include <string>
00024
00025 namespace itk
00026 {
00027
00035 class ITKCommon_EXPORT MetaDataDictionary
00036 {
00037 public:
00038 typedef MetaDataDictionary Self;
00043 virtual void Print(std::ostream& os) const;
00044
00045
00046
00047 class MetaDataDictionaryMapType
00048 : public std::map<std::string, MetaDataObjectBase::Pointer>
00049 {
00050 };
00051
00052 typedef MetaDataDictionaryMapType::iterator Iterator;
00053 typedef MetaDataDictionaryMapType::const_iterator ConstIterator;
00054
00055
00056 MetaDataDictionary();
00057
00058 MetaDataDictionary(const MetaDataDictionary&);
00059
00060 void operator=(const MetaDataDictionary&);
00061
00062
00063 virtual ~MetaDataDictionary();
00064
00068 std::vector<std::string> GetKeys() const;
00069
00070
00071
00072
00073
00074 MetaDataObjectBase::Pointer &operator [](const std::string &);
00075 const MetaDataObjectBase * operator [](const std::string &) const;
00076 bool HasKey (const std::string &);
00077
00078
00084 Iterator Begin();
00085 ConstIterator Begin() const;
00086
00088 Iterator End();
00089 ConstIterator End() const;
00090
00092 Iterator Find(const std::string & key);
00093 ConstIterator Find(const std::string & key) const;
00094
00095 private:
00096 MetaDataDictionaryMapType *m_Dictionary;
00097 };
00098
00099 }
00100 #endif // __itkMetaDataDictionary_h
00101