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;
00039
00044 virtual void Print(std::ostream& os) const;
00045
00046
00047
00048 class MetaDataDictionaryMapType
00049 : public std::map<std::string, MetaDataObjectBase::Pointer>
00050 {
00051 };
00052
00053 typedef MetaDataDictionaryMapType::iterator Iterator;
00054 typedef MetaDataDictionaryMapType::const_iterator ConstIterator;
00055
00056
00057 MetaDataDictionary();
00058
00059 MetaDataDictionary(const MetaDataDictionary&);
00060
00061 void operator=(const MetaDataDictionary&);
00062
00063
00064 virtual ~MetaDataDictionary();
00065
00069 std::vector<std::string> GetKeys() const;
00070
00071
00072
00073
00074
00075 MetaDataObjectBase::Pointer &operator [](const std::string &);
00076 const MetaDataObjectBase * operator [](const std::string &) const;
00077 bool HasKey (const std::string &);
00078
00079
00085 Iterator Begin();
00086 ConstIterator Begin() const;
00088
00090 Iterator End();
00091 ConstIterator End() const;
00093
00095 Iterator Find(const std::string & key);
00096 ConstIterator Find(const std::string & key) const;
00098
00099 private:
00100 MetaDataDictionaryMapType *m_Dictionary;
00101 };
00102
00103 }
00104 #endif // __itkMetaDataDictionary_h
00105
00106