31 #ifndef OPENVDB_METADATA_METAMAP_HAS_BEEN_INCLUDED
32 #define OPENVDB_METADATA_METAMAP_HAS_BEEN_INCLUDED
36 #include <openvdb/metadata/Metadata.h>
37 #include <openvdb/Types.h>
38 #include <openvdb/Exceptions.h>
49 typedef boost::shared_ptr<MetaMap>
Ptr;
50 typedef boost::shared_ptr<const MetaMap>
ConstPtr;
70 void readMeta(std::istream&);
72 void writeMeta(std::ostream&)
const;
85 void insertMeta(
const MetaMap&);
88 void removeMeta(
const Name&);
98 template<
typename T>
typename T::Ptr getMetadata(
const Name&);
101 template<
typename T>
typename T::ConstPtr getMetadata(
const Name&)
const;
107 template<
typename T> T& metaValue(
const Name&);
108 template<
typename T>
const T& metaValue(
const Name&)
const;
112 MetaIterator
endMeta() {
return mMeta.end(); }
113 ConstMetaIterator
beginMeta()
const {
return mMeta.begin(); }
114 ConstMetaIterator
endMeta()
const {
return mMeta.end(); }
121 std::string str(
const std::string& indent =
"")
const;
144 return (iter == mMeta.end() ?
Metadata::Ptr() : iter->second);
151 return (iter == mMeta.end() ?
Metadata::Ptr() : iter->second);
158 template <
typename T>
159 inline typename T::Ptr
163 if(iter == mMeta.end()) {
164 return typename T::Ptr();
171 if (iter->second->typeName() == T::staticTypeName()) {
172 return boost::static_pointer_cast<T,
Metadata>(iter->second);
174 return typename T::Ptr();
177 template <
typename T>
178 inline typename T::ConstPtr
182 if(iter == mMeta.end()) {
183 return typename T::ConstPtr();
189 if (iter->second->typeName() == T::staticTypeName()) {
190 return boost::static_pointer_cast<
const T,
const Metadata>(iter->second);
192 return typename T::ConstPtr();
199 template <
typename T>
201 MetaMap::getValidTypedMetadata(
const Name &name)
const
222 template <
typename T>
231 template <
typename T>
242 #endif // OPENVDB_METADATA_METAMAP_HAS_BEEN_INCLUDED
std::string Name
Definition: Name.h:44
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:97
#define OPENVDB_VERSION_NAME
Definition: version.h:43
Definition: Exceptions.h:83
Definition: Exceptions.h:87
Definition: Exceptions.h:39
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:71
std::ostream & operator<<(std::ostream &, const MetaMap &)
Write a MetaMap to an output stream.