OpenVDB  6.2.1
DelayedLoadMetadata.h
Go to the documentation of this file.
1 //
2 // TM & (c) Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
3 // All rights reserved. This software is distributed under the
4 // Mozilla Public License 2.0 ( http://www.mozilla.org/MPL/2.0/ )
5 //
6 
7 #ifndef OPENVDB_DELAYED_LOAD_METADATA_HAS_BEEN_INCLUDED
8 #define OPENVDB_DELAYED_LOAD_METADATA_HAS_BEEN_INCLUDED
9 
10 #include <openvdb/Metadata.h>
11 #include <cstdint>
12 #include <iostream>
13 #include <string>
14 #include <vector>
15 
16 
17 namespace openvdb {
19 namespace OPENVDB_VERSION_NAME {
20 namespace io {
21 
25 {
26 public:
29  using MaskType = int8_t;
30  using CompressedSizeType = int64_t;
31 
32  DelayedLoadMetadata() = default;
34  ~DelayedLoadMetadata() override = default;
35 
36  Name typeName() const override;
37  Metadata::Ptr copy() const override;
38  void copy(const Metadata&) override;
39  std::string str() const override;
40  bool asBool() const override;
41  Index32 size() const override;
42 
43  static Name staticTypeName() { return "__delayedload"; }
44 
46  {
48  return ret;
49  }
50 
51  static void registerType()
52  {
53  Metadata::registerType(DelayedLoadMetadata::staticTypeName(),
54  DelayedLoadMetadata::createMetadata);
55  }
56 
57  static void unregisterType()
58  {
59  Metadata::unregisterType(DelayedLoadMetadata::staticTypeName());
60  }
61 
62  static bool isRegisteredType()
63  {
64  return Metadata::isRegisteredType(DelayedLoadMetadata::staticTypeName());
65  }
66 
68  void clear();
70  bool empty() const;
71 
73  void resizeMask(size_t size);
75  void resizeCompressedSize(size_t size);
76 
79  MaskType getMask(size_t index) const;
82  void setMask(size_t index, const MaskType& value);
83 
86  CompressedSizeType getCompressedSize(size_t index) const;
89  void setCompressedSize(size_t index, const CompressedSizeType& value);
90 
91 protected:
92  void readValue(std::istream&, Index32 numBytes) override;
93  void writeValue(std::ostream&) const override;
94 
95 private:
96  std::vector<MaskType> mMask;
97  std::vector<CompressedSizeType> mCompressedSize;
98 }; // class DelayedLoadMetadata
99 
100 
101 } // namespace io
102 } // namespace OPENVDB_VERSION_NAME
103 } // namespace openvdb
104 
105 #endif // OPENVDB_DELAYED_LOAD_METADATA_HAS_BEEN_INCLUDED
static void unregisterType()
Definition: DelayedLoadMetadata.h:57
#define OPENVDB_API
Helper macros for defining library symbol visibility.
Definition: Platform.h:288
static bool isRegisteredType(const Name &typeName)
Return true if the given type is known by the metadata type registry.
static void registerType(const Name &typeName, Metadata::Ptr(*createMetadata)())
Register the given metadata type along with a factory function.
std::shared_ptr< T > SharedPtr
Definition: Types.h:139
static void registerType()
Definition: DelayedLoadMetadata.h:51
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:128
std::string Name
Definition: Name.h:44
static void unregisterType(const Name &typeName)
Store a buffer of data that can be optionally used during reading for faster delayed-load I/O perform...
Definition: DelayedLoadMetadata.h:24
SharedPtr< const Metadata > ConstPtr
Definition: Metadata.h:54
Definition: Exceptions.h:40
int8_t MaskType
Definition: DelayedLoadMetadata.h:29
int64_t CompressedSizeType
Definition: DelayedLoadMetadata.h:30
static Name staticTypeName()
Definition: DelayedLoadMetadata.h:43
static bool isRegisteredType()
Definition: DelayedLoadMetadata.h:62
static Metadata::Ptr createMetadata()
Definition: DelayedLoadMetadata.h:45
SharedPtr< Metadata > Ptr
Definition: Metadata.h:53
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:180
uint32_t Index32
Definition: Types.h:59
Base class for storing metadata information in a grid.
Definition: Metadata.h:50