OpenVDB 10.0.1
Loading...
Searching...
No Matches
DelayedLoadMetadata.h
Go to the documentation of this file.
1// Copyright Contributors to the OpenVDB Project
2// SPDX-License-Identifier: MPL-2.0
3
4#ifndef OPENVDB_DELAYED_LOAD_METADATA_HAS_BEEN_INCLUDED
5#define OPENVDB_DELAYED_LOAD_METADATA_HAS_BEEN_INCLUDED
6
7#include <openvdb/Metadata.h>
8#include <cstdint>
9#include <iostream>
10#include <string>
11#include <vector>
12
13
14namespace openvdb {
16namespace OPENVDB_VERSION_NAME {
17namespace io {
18
19/// @brief Store a buffer of data that can be optionally used
20/// during reading for faster delayed-load I/O performance
22{
23public:
26 using MaskType = int8_t;
27 using CompressedSizeType = int64_t;
28
31 ~DelayedLoadMetadata() override = default;
32
33 Name typeName() const override;
34 Metadata::Ptr copy() const override;
35 void copy(const Metadata&) override;
36 std::string str() const override;
37 bool asBool() const override;
38 Index32 size() const override;
39
40 static Name staticTypeName() { return "__delayedload"; }
41
43 {
45 return ret;
46 }
47
48 static void registerType()
49 {
50 Metadata::registerType(DelayedLoadMetadata::staticTypeName(),
51 DelayedLoadMetadata::createMetadata);
52 }
53
54 static void unregisterType()
55 {
56 Metadata::unregisterType(DelayedLoadMetadata::staticTypeName());
57 }
58
59 static bool isRegisteredType()
60 {
61 return Metadata::isRegisteredType(DelayedLoadMetadata::staticTypeName());
62 }
63
64 /// @brief Delete the contents of the mask and compressed size arrays
65 void clear();
66 /// @brief Return @c true if both arrays are empty
67 bool empty() const;
68
69 /// @brief Resize the mask array
70 void resizeMask(size_t size);
71 /// @brief Resize the compressed size array
72 void resizeCompressedSize(size_t size);
73
74 /// @brief Return the mask value for a specific index
75 /// @note throws if index is out-of-range or DelayedLoadMask not registered
76 MaskType getMask(size_t index) const;
77 /// @brief Set the mask value for a specific index
78 /// @note throws if index is out-of-range
79 void setMask(size_t index, const MaskType& value);
80
81 /// @brief Return the compressed size value for a specific index
82 /// @note throws if index is out-of-range or DelayedLoadMask not registered
84 /// @brief Set the compressed size value for a specific index
85 /// @note throws if index is out-of-range
86 void setCompressedSize(size_t index, const CompressedSizeType& value);
87
88protected:
89 void readValue(std::istream&, Index32 numBytes) override;
90 void writeValue(std::ostream&) const override;
91
92private:
93 std::vector<MaskType> mMask;
94 std::vector<CompressedSizeType> mCompressedSize;
95}; // class DelayedLoadMetadata
96
97
98} // namespace io
99} // namespace OPENVDB_VERSION_NAME
100} // namespace openvdb
101
102#endif // OPENVDB_DELAYED_LOAD_METADATA_HAS_BEEN_INCLUDED
ValueT value
Definition: GridBuilder.h:1290
#define OPENVDB_API
Definition: Platform.h:251
Base class for storing metadata information in a grid.
Definition: Metadata.h:24
SharedPtr< Metadata > Ptr
Definition: Metadata.h:26
Store a buffer of data that can be optionally used during reading for faster delayed-load I/O perform...
Definition: DelayedLoadMetadata.h:22
int8_t MaskType
Definition: DelayedLoadMetadata.h:26
static void registerType()
Definition: DelayedLoadMetadata.h:48
SharedPtr< const DelayedLoadMetadata > ConstPtr
Definition: DelayedLoadMetadata.h:25
int64_t CompressedSizeType
Definition: DelayedLoadMetadata.h:27
SharedPtr< DelayedLoadMetadata > Ptr
Definition: DelayedLoadMetadata.h:24
Index32 size() const override
Return the size of this metadata in bytes.
void resizeCompressedSize(size_t size)
Resize the compressed size array.
CompressedSizeType getCompressedSize(size_t index) const
Return the compressed size value for a specific index.
bool empty() const
Return true if both arrays are empty.
void setCompressedSize(size_t index, const CompressedSizeType &value)
Set the compressed size value for a specific index.
void copy(const Metadata &) override
Copy the given metadata into this metadata.
std::string str() const override
Return a textual representation of this metadata.
Name typeName() const override
Return the type name of the metadata.
void setMask(size_t index, const MaskType &value)
Set the mask value for a specific index.
void writeValue(std::ostream &) const override
Write the metadata to a stream.
Metadata::Ptr copy() const override
Return a copy of the metadata.
MaskType getMask(size_t index) const
Return the mask value for a specific index.
void clear()
Delete the contents of the mask and compressed size arrays.
static Name staticTypeName()
Definition: DelayedLoadMetadata.h:40
void readValue(std::istream &, Index32 numBytes) override
Read the metadata from a stream.
static void unregisterType()
Definition: DelayedLoadMetadata.h:54
DelayedLoadMetadata(const DelayedLoadMetadata &other)
void resizeMask(size_t size)
Resize the mask array.
static Metadata::Ptr createMetadata()
Definition: DelayedLoadMetadata.h:42
static bool isRegisteredType()
Definition: DelayedLoadMetadata.h:59
std::string Name
Definition: Name.h:17
uint32_t Index32
Definition: Types.h:52
std::shared_ptr< T > SharedPtr
Definition: Types.h:114
Definition: Exceptions.h:13
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h.in:212