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
101 static void uncompressData(const void* compressed_data, size_t nr_bytes, std::string& out, size_t expected_size = 0);
102
116 static void byteShuffle(const void* data, size_t nr_bytes, size_t element_size, std::string& out);
117
129 static void byteUnshuffle(const void* data, size_t nr_bytes, size_t element_size, std::string& out);
130
144 static void dictionaryEncode(const void* data, size_t nr_bytes, size_t element_size, std::string& out);
145
166 static void dictionaryDecode(const void* data, size_t nr_bytes, size_t element_size, std::string& out, size_t array_length = 0);
167
183 static void encode(const void* data, size_t nr_bytes, ByteTransform transform, size_t element_size, std::string& out, int level = DEFAULT_LEVEL);
184
201 static void decode(const void* data, size_t nr_bytes, ByteTransform transform, size_t element_size, std::string& out, size_t array_length = 0);
202 };
203
204} // namespace OpenMS
205
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)
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