Coverage Report

Created: 2025-07-11 06:33

/src/bag/api/bag_interleavedlegacylayerdescriptor.h
Line
Count
Source (jump to first uncovered line)
1
#ifndef BAG_INTERLEAVEDLAYERDESCRIPTOR_H
2
#define BAG_INTERLEAVEDLAYERDESCRIPTOR_H
3
4
#include "bag_config.h"
5
#include "bag_fordec.h"
6
#include "bag_layerdescriptor.h"
7
#include "bag_types.h"
8
9
10
namespace BAG {
11
12
#ifdef _MSC_VER
13
#pragma warning(push)
14
#pragma warning(disable: 4251)  // std classes do not have DLL-interface when exporting
15
#endif
16
17
//! Describe an interleaved layer.
18
class BAG_API InterleavedLegacyLayerDescriptor final : public LayerDescriptor
19
{
20
public:
21
    static std::shared_ptr<InterleavedLegacyLayerDescriptor> create(
22
        const Dataset& dataset, LayerType layerType, GroupType groupType);
23
24
    static std::shared_ptr<InterleavedLegacyLayerDescriptor> open(
25
        const Dataset& dataset, LayerType layerType, GroupType groupType);
26
27
    InterleavedLegacyLayerDescriptor(const InterleavedLegacyLayerDescriptor&) = delete;
28
    InterleavedLegacyLayerDescriptor(InterleavedLegacyLayerDescriptor&&) = delete;
29
30
    InterleavedLegacyLayerDescriptor& operator=(const InterleavedLegacyLayerDescriptor&) = delete;
31
    InterleavedLegacyLayerDescriptor& operator=(InterleavedLegacyLayerDescriptor&&) = delete;
32
33
0
    bool operator==(const InterleavedLegacyLayerDescriptor &rhs) const noexcept {
34
0
        return m_groupType == rhs.m_groupType &&
35
0
               m_elementSize == rhs.m_elementSize;
36
0
    }
37
38
0
    bool operator!=(const InterleavedLegacyLayerDescriptor &rhs) const noexcept {
39
0
        return !(rhs == *this);
40
0
    }
41
42
    GroupType getGroupType() const noexcept;
43
44
protected:
45
    InterleavedLegacyLayerDescriptor(uint32_t id, LayerType layerType,
46
        GroupType groupType);
47
    InterleavedLegacyLayerDescriptor(const Dataset& dataset, LayerType layerType,
48
        GroupType groupType);
49
50
private:
51
    static void validateTypes(LayerType layerType, GroupType groupType);
52
53
    DataType getDataTypeProxy() const noexcept override;
54
    uint8_t getElementSizeProxy() const noexcept override;
55
56
    //! The group type.
57
    GroupType m_groupType = UNKNOWN_GROUP_TYPE;
58
    //! The size of a node in the HDF5 DataSet (depends on group type).
59
    uint8_t m_elementSize = 0;
60
61
};
62
63
#ifdef _MSC_VER
64
#pragma warning(pop)
65
#endif
66
67
}  // namespace BAG
68
69
#endif  // BAG_INTERLEAVEDLAYERDESCRIPTOR_H
70