GCC Code Coverage Report


Directory: ./
File: openvdb/openvdb/io/DelayedLoadMetadata.h
Date: 2022-07-25 17:40:05
Exec Total Coverage
Lines: 13 13 100.0%
Functions: 5 5 100.0%
Branches: 6 10 60.0%

Line Branch Exec Source
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
14 namespace openvdb {
15 OPENVDB_USE_VERSION_NAMESPACE
16 namespace OPENVDB_VERSION_NAME {
17 namespace io {
18
19 /// @brief Store a buffer of data that can be optionally used
20 /// during reading for faster delayed-load I/O performance
21 class OPENVDB_API DelayedLoadMetadata: public Metadata
22 {
23 public:
24 using Ptr = SharedPtr<DelayedLoadMetadata>;
25 using ConstPtr = SharedPtr<const DelayedLoadMetadata>;
26 using MaskType = int8_t;
27 using CompressedSizeType = int64_t;
28
29 DelayedLoadMetadata() = default;
30 DelayedLoadMetadata(const DelayedLoadMetadata& other);
31
2/2
✓ Branch 0 taken 344 times.
✓ Branch 1 taken 214 times.
1920 ~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
1/2
✓ Branch 2 taken 12800 times.
✗ Branch 3 not taken.
25748 static Name staticTypeName() { return "__delayedload"; }
41
42 86 static Metadata::Ptr createMetadata()
43 {
44 86 Metadata::Ptr ret(new DelayedLoadMetadata);
45 86 return ret;
46 }
47
48 327 static void registerType()
49 {
50
1/2
✓ Branch 1 taken 327 times.
✗ Branch 2 not taken.
327 Metadata::registerType(DelayedLoadMetadata::staticTypeName(),
51 DelayedLoadMetadata::createMetadata);
52 327 }
53
54 2 static void unregisterType()
55 {
56
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 Metadata::unregisterType(DelayedLoadMetadata::staticTypeName());
57 2 }
58
59 23898 static bool isRegisteredType()
60 {
61
1/2
✓ Branch 1 taken 23898 times.
✗ Branch 2 not taken.
47796 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
83 CompressedSizeType getCompressedSize(size_t index) const;
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
88 protected:
89 void readValue(std::istream&, Index32 numBytes) override;
90 void writeValue(std::ostream&) const override;
91
92 private:
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
103