OpenMS
Loading...
Searching...
No Matches
ZstdCompression.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Timo Sachsenberg $
6// $Authors: Timo Sachsenberg $
7// --------------------------------------------------------------------------
8
9#pragma once
10
12#include <OpenMS/OpenMSConfig.h>
14
15#include <string>
16
17namespace OpenMS
18{
19
55 class OPENMS_DLLAPI ZstdCompression
56 {
57public:
58
60 enum class ByteTransform
61 {
62 NONE,
63 BYTE_SHUFFLE,
64 DICTIONARY
65 };
66
68 static constexpr int DEFAULT_LEVEL = 3;
69
82 static void compressData(const void* raw_data, size_t in_length, std::string& compressed_data, int level = DEFAULT_LEVEL);
83
104 static void uncompressData(const void* compressed_data, size_t nr_bytes, std::string& out, size_t expected_size = 0,
105 size_t max_size = 0);
106
120 static void byteShuffle(const void* data, size_t nr_bytes, size_t element_size, std::string& out);
121
133 static void byteUnshuffle(const void* data, size_t nr_bytes, size_t element_size, std::string& out);
134
148 static void dictionaryEncode(const void* data, size_t nr_bytes, size_t element_size, std::string& out);
149
170 static void dictionaryDecode(const void* data, size_t nr_bytes, size_t element_size, std::string& out, size_t array_length = 0);
171
187 static void encode(const void* data, size_t nr_bytes, ByteTransform transform, size_t element_size, std::string& out, int level = DEFAULT_LEVEL);
188
205 static void decode(const void* data, size_t nr_bytes, ByteTransform transform, size_t element_size, std::string& out, size_t array_length = 0);
206 };
207
208} // namespace OpenMS
209
Compresses and uncompresses byte buffers using Zstandard (zstd), optionally combined with the byte-sh...
Definition ZstdCompression.h:56
static void compressData(const void *raw_data, size_t in_length, std::string &compressed_data, int level=DEFAULT_LEVEL)
Compress the in_length bytes pointed to by raw_data into compressed_data using zstd.
static void encode(const void *data, size_t nr_bytes, ByteTransform transform, size_t element_size, std::string &out, int level=DEFAULT_LEVEL)
Apply transform to an array of little-endian element_size byte elements and compress the result with ...
static void decode(const void *data, size_t nr_bytes, ByteTransform transform, size_t element_size, std::string &out, size_t array_length=0)
Uncompress zstd data and reverse transform, yielding an array of little-endian element_size byte elem...
static void byteShuffle(const void *data, size_t nr_bytes, size_t element_size, std::string &out)
Byte-shuffle an array of element_size byte elements.
ByteTransform
Transform applied to the (little-endian) array bytes prior to zstd compression.
Definition ZstdCompression.h:61
static void uncompressData(const void *compressed_data, size_t nr_bytes, std::string &out, size_t expected_size=0, size_t max_size=0)
Uncompress the zstd-compressed compressed_data.
static void dictionaryEncode(const void *data, size_t nr_bytes, size_t element_size, std::string &out)
Dictionary-encode an array of little-endian element_size byte elements (values and indices byte-shuff...
static void byteUnshuffle(const void *data, size_t nr_bytes, size_t element_size, std::string &out)
Reverse the byte shuffling done by byteShuffle().
static void dictionaryDecode(const void *data, size_t nr_bytes, size_t element_size, std::string &out, size_t array_length=0)
Decode a buffer created by dictionaryEncode() back into an array of little-endian element_size byte e...
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19