NIST Biometric Evaluation Framework
Software components for biometric technology evaluations
be_io_compressor.h
Go to the documentation of this file.
1/*
2 * This software was developed at the National Institute of Standards and
3 * Technology (NIST) by employees of the Federal Government in the course
4 * of their official duties. Pursuant to title 17 Section 105 of the
5 * United States Code, this software is not subject to copyright protection
6 * and is in the public domain. NIST assumes no responsibility whatsoever for
7 * its use by other parties, and makes no guarantees, expressed or implied,
8 * about its quality, reliability, or any other characteristic.
9 */
10
11#ifndef __BE_IO_COMPRESSOR__
12#define __BE_IO_COMPRESSOR__
13
14#include <map>
15#include <memory>
16#include <string>
17
18#include <be_error_exception.h>
20#include <be_io_properties.h>
21#include <be_memory_autoarray.h>
22
23namespace BiometricEvaluation
24{
25 namespace IO
26 {
33 {
34 public:
36 enum class Kind {
37 GZIP
38 };
39
47
63 virtual Memory::uint8Array
65 const uint8_t *const uncompressedData,
66 uint64_t uncompressedDataSize)
67 const = 0;
68
82 virtual Memory::uint8Array
84 const Memory::uint8Array &uncompressedData)
85 const = 0;
86
103 virtual void
105 const uint8_t *const uncompressedData,
106 uint64_t uncompressedDataSize,
107 const std::string &outputFile) const = 0;
108
123 virtual void
125 const Memory::uint8Array &uncompressedData,
126 const std::string &outputFile) const = 0;
127
143 virtual Memory::uint8Array
145 const std::string &inputFile)
146 const = 0;
147
165 virtual void
167 const std::string &inputFile,
168 const std::string &outputFile) const = 0;
169
185 virtual Memory::uint8Array
187 const uint8_t *const compressedData,
188 uint64_t compressedDataSize)
189 const = 0;
190
204 virtual Memory::uint8Array
206 const Memory::uint8Array &compressedData)
207 const = 0;
208
224 virtual Memory::uint8Array
226 const std::string &inputFile)
227 const = 0;
228
244 virtual void
246 const Memory::uint8Array &compressedData,
247 const std::string &outputFile) const = 0;
248
266 virtual void
268 const uint8_t *const compressedData,
269 const uint64_t compressedDataSize,
270 const std::string &outputFile) const = 0;
271
289 virtual void
291 const std::string &inputFile,
292 const std::string &outputFile) const = 0;
293
308 void
310 const std::string &optionName,
311 const std::string &optionValue);
312
327 void
329 const std::string &optionName,
330 int64_t optionValue);
331
342 std::string
344 const std::string &optionName) const;
345
359 int64_t
361 const std::string &optionName) const;
362
370 void
372 const std::string &optionName);
373
375 virtual ~Compressor();
376
389 static std::shared_ptr<Compressor>
391 Compressor::Kind compressorKind = Kind::GZIP);
392
403 const Compressor &other) = delete;
404
420 const Compressor& other) = delete;
421
422 private:
424 Properties _compressorOptions;
425 };
426 }
427}
428
431 BE_IO_Compressor_Kind_EnumToStringMap);
432
433#endif /* __BE_IO_COMPRESSOR__ */
BE_FRAMEWORK_ENUMERATION_DECLARATIONS(BiometricEvaluation::IO::Compressor::Kind, BE_IO_Compressor_Kind_EnumToStringMap)
Common interface for classes providing compressing and decompressing functionality.
Compressor & operator=(const Compressor &other)=delete
Assignment overload (disabled).
virtual Memory::uint8Array decompress(const std::string &inputFile) const =0
Decompress a compressed buffer into a file.
std::string getOption(const std::string &optionName) const
Obtain a compressor option as an integer.
virtual void compress(const uint8_t *const uncompressedData, uint64_t uncompressedDataSize, const std::string &outputFile) const =0
Compress a buffer.
virtual void decompress(const std::string &inputFile, const std::string &outputFile) const =0
Decompress a file.
virtual Memory::uint8Array compress(const Memory::uint8Array &uncompressedData) const =0
Compress a buffer.
void setOption(const std::string &optionName, const std::string &optionValue)
Assign a compressor option.
Compressor(const Compressor &other)=delete
Copy constructor (disabled).
virtual Memory::uint8Array compress(const std::string &inputFile) const =0
Compress a file.
static std::shared_ptr< Compressor > createCompressor(Compressor::Kind compressorKind=Kind::GZIP)
Compressor factory.
virtual void decompress(const uint8_t *const compressedData, const uint64_t compressedDataSize, const std::string &outputFile) const =0
Decompress a file.
virtual Memory::uint8Array decompress(const uint8_t *const compressedData, uint64_t compressedDataSize) const =0
Decompress a compressed buffer.
virtual void compress(const std::string &inputFile, const std::string &outputFile) const =0
Compress a file.
void setOption(const std::string &optionName, int64_t optionValue)
Assign a compressor option.
void removeOption(const std::string &optionName)
Remove a compressor option.
int64_t getOptionAsInteger(const std::string &optionName) const
Obtain a compressor option as an integer.
virtual void compress(const Memory::uint8Array &uncompressedData, const std::string &outputFile) const =0
Compress a buffer.
virtual void decompress(const Memory::uint8Array &compressedData, const std::string &outputFile) const =0
Decompress a file.
virtual Memory::uint8Array decompress(const Memory::uint8Array &compressedData) const =0
Decompress a compressed buffer.
Compressor()
Create a new Compressor object.
virtual ~Compressor()
Destructor.
Kind
Kinds of Compressors (for factory)
virtual Memory::uint8Array compress(const uint8_t *const uncompressedData, uint64_t uncompressedDataSize) const =0
Compress a buffer.
Maintain key/value pairs of strings, with each property matched to one value.
This software was developed at the National Institute of Standards and Technology (NIST) by employees...