h5cpp 0.7.1
A modern C++ wrapper for the HDF5 C library
szip.hpp
Go to the documentation of this file.
1//
2// (c) Copyright 2017 DESY,ESS
3//
4// This file is part of h5cpp.
5//
6// This library is free software; you can redistribute it and/or modify it
7// under the terms of the GNU Lesser General Public License as published
8// by the Free Software Foundation; either version 2.1 of the License, or
9// (at your option) any later version.
10//
11// This library is distributed in the hope that it will be useful, but
12// WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY
13// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14// License for more details.
15//
16// You should have received a copy of the GNU Lesser General Public License
17// along with this library; if not, write to the
18// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor
19// Boston, MA 02110-1301 USA
20// ===========================================================================
21//
22// Authors:
23// Eugen Wintersberger <eugen.wintersberger@desy.de>
24// Jan Kotanski <jan.kotanski@desy.de>
25// Created on: Dec 20, 2020
26//
27#pragma once
28
30
31namespace hdf5 {
32namespace filter {
33
34#ifdef __clang__
35#pragma clang diagnostic push
36#pragma clang diagnostic ignored "-Wpadded"
37#endif
38class DLL_EXPORT SZip : public Filter
39{
40 public:
44 enum class OptionMask : unsigned int {
46 None = 0u,
48 AllowK13 = H5_SZIP_ALLOW_K13_OPTION_MASK,
50 Chip = H5_SZIP_CHIP_OPTION_MASK,
52 EntropyCoding = H5_SZIP_EC_OPTION_MASK,
54 NearestNeighbor = H5_SZIP_NN_OPTION_MASK,
55 };
57 using OptionMaskBase = std::underlying_type<OptionMask>::type;
58
66 SZip(OptionMask option_mask, unsigned int pixels_per_block);
70 SZip(OptionMaskBase option_mask, unsigned int pixels_per_block);
71 ~SZip() override;
72
76 OptionMaskBase option_mask() const noexcept;
77
81 void option_mask(OptionMaskBase option_mask);
82
86 void option_mask(OptionMask option_mask);
87
91 unsigned int pixels_per_block() const noexcept;
92
96 void pixels_per_block(unsigned int pixels_per_block);
97
98 virtual void operator()(const property::DatasetCreationList &dcpl,
99 Availability flag=Availability::Mandatory) const override;
100 private:
101 SZip::OptionMaskBase option_mask_;
102 unsigned int pixels_per_block_;
103};
104
105 DLL_EXPORT std::ostream &operator<<(std::ostream &stream,const SZip::OptionMask &flags);
106
107 DLL_EXPORT SZip::OptionMaskBase operator|(const SZip::OptionMask &lhs,const SZip::OptionMask &rhs);
108 DLL_EXPORT SZip::OptionMaskBase operator|(const SZip::OptionMaskBase &lhs,const SZip::OptionMask &rhs);
109 DLL_EXPORT SZip::OptionMaskBase operator|(const SZip::OptionMask &lhs,const SZip::OptionMaskBase &rhs);
110
111 DLL_EXPORT SZip::OptionMaskBase operator&(const SZip::OptionMask &lhs,const SZip::OptionMask &rhs);
112 DLL_EXPORT SZip::OptionMaskBase operator&(const SZip::OptionMaskBase &lhs,const SZip::OptionMask &rhs);
113 DLL_EXPORT SZip::OptionMaskBase operator&(const SZip::OptionMask &lhs,const SZip::OptionMaskBase &rhs);
114
115 DLL_EXPORT bool operator==(const SZip::OptionMask &lhs,const SZip::OptionMask &rhs);
116 DLL_EXPORT bool operator==(const SZip::OptionMaskBase &lhs,const SZip::OptionMask &rhs);
117 DLL_EXPORT bool operator==(const SZip::OptionMask &lhs,const SZip::OptionMaskBase &rhs);
118
119 DLL_EXPORT bool operator!=(const SZip::OptionMask &lhs,const SZip::OptionMask &rhs);
120 DLL_EXPORT bool operator!=(const SZip::OptionMaskBase &lhs,const SZip::OptionMask &rhs);
121 DLL_EXPORT bool operator!=(const SZip::OptionMask &lhs,const SZip::OptionMaskBase &rhs);
122
123#ifdef __clang__
124#pragma clang diagnostic pop
125#endif
126
127} // namespace filter
128} // namespace hdf5
abstract filter class
Definition: filter.hpp:46
Definition: szip.hpp:39
SZip()
default constructor
SZip(OptionMask option_mask, unsigned int pixels_per_block)
constructor option mask and pixels per block
OptionMaskBase option_mask() const noexcept
get the option mask
std::underlying_type< OptionMask >::type OptionMaskBase
option mask base type
Definition: szip.hpp:57
OptionMask
encoding method
Definition: szip.hpp:44
SZip(OptionMaskBase option_mask, unsigned int pixels_per_block)
constructor option mask and pixels per block
Availability
availability requirement of a filter
Definition: types.hpp:48
top-level namespace of the entire library
Definition: attribute.hpp:45
#define DLL_EXPORT
Definition: windows.hpp:29