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>
51 typedef boost::shared_ptr<MetaMap>
Ptr;
52 typedef boost::shared_ptr<const MetaMap>
ConstPtr;
75 void readMeta(std::istream&);
78 void writeMeta(std::ostream&)
const;
87 void insertMeta(
const Name& name,
const Metadata& metadata);
93 void removeMeta(
const Name &name);
103 template<
typename T>
typename T::Ptr getMetadata(
const Name &name);
105 template<
typename T>
typename T::ConstPtr getMetadata(
const Name &name)
const;
111 template<
typename T> T& metaValue(
const Name &name);
112 template<
typename T>
const T& metaValue(
const Name &name)
const;
124 bool empty()
const {
return mMeta.empty(); }
127 std::string str()
const;
150 return (iter == mMeta.end() ?
Metadata::Ptr() : iter->second);
157 return (iter == mMeta.end() ?
Metadata::Ptr() : iter->second);
164 template <
typename T>
165 inline typename T::Ptr
169 if(iter == mMeta.end()) {
170 return typename T::Ptr();
177 if (iter->second->typeName() == T::staticTypeName()) {
178 return boost::static_pointer_cast<T,
Metadata>(iter->second);
180 return typename T::Ptr();
183 template <
typename T>
184 inline typename T::ConstPtr
188 if(iter == mMeta.end()) {
189 return typename T::ConstPtr();
195 if (iter->second->typeName() == T::staticTypeName()) {
196 return boost::static_pointer_cast<
const T,
const Metadata>(iter->second);
198 return typename T::ConstPtr();
205 template <
typename T>
207 MetaMap::getValidTypedMetadata(
const Name &name)
const
209 ConstMetaIterator iter = mMeta.find(name);
228 template <
typename T>
237 template <
typename T>
248 #endif // OPENVDB_METADATA_METAMAP_HAS_BEEN_INCLUDED
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:97
std::ostream & operator<<(std::ostream &os, const BBox< Vec3T > &b)
Definition: BBox.h:453
Definition: Exceptions.h:87
#define OPENVDB_VERSION_NAME
Definition: version.h:45
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:67
std::string Name
Definition: Name.h:44
Definition: Exceptions.h:83