GDAL
Classes | Typedefs | Enumerations | Functions
cpl_compressor.h File Reference

API for compressors and decompressors of binary buffers. More...

#include "cpl_port.h"
#include <stdbool.h>

Go to the source code of this file.

Classes

struct  CPLCompressor
 Compressor/decompressor description. More...
 

Typedefs

typedef bool(* CPLCompressionFunc) (const void *input_data, size_t input_size, void **output_data, size_t *output_size, CSLConstList options, void *compressor_user_data)
 Callback of a compressor/decompressor. More...
 

Enumerations

enum  CPLCompressorType { CCT_COMPRESSOR , CCT_FILTER }
 Type of compressor. More...
 

Functions

bool CPLRegisterCompressor (const CPLCompressor *compressor)
 Register a new compressor. More...
 
bool CPLRegisterDecompressor (const CPLCompressor *decompressor)
 Register a new decompressor. More...
 
char ** CPLGetCompressors (void)
 Return the list of registered compressors. More...
 
char ** CPLGetDecompressors (void)
 Return the list of registered decompressors. More...
 
const CPLCompressorCPLGetCompressor (const char *pszId)
 Return a compressor. More...
 
const CPLCompressorCPLGetDecompressor (const char *pszId)
 Return a decompressor. More...
 

Detailed Description

API for compressors and decompressors of binary buffers.

Typedef Documentation

◆ CPLCompressionFunc

typedef bool(* CPLCompressionFunc) (const void *input_data, size_t input_size, void **output_data, size_t *output_size, CSLConstList options, void *compressor_user_data)

Callback of a compressor/decompressor.

For a compressor, input is uncompressed data, and output compressed data. For a decompressor, input is compressed data, and output uncompressed data.

Valid situations for output_data and output_size are:

  • output_data != NULL and *output_data != NULL and output_size != NULL and *output_size != 0. The caller provides the output buffer in *output_data and its size in *output_size. In case of successful operation, *output_size will be updated to the actual size. This mode is the one that is always guaranteed to be implemented efficiently. In case of failure due to insufficient space, it will be updated to the size needed (if known), or 0 (if unknown)
  • output_data == NULL and output_size != NULL. *output_size will be updated with the minimum size the output buffer should be (if known), or 0 (if unknown).
  • output_data != NULL and *output_data == NULL and output_size != NULL. *output_data will be allocated using VSIMalloc(), and should be freed by the caller with VSIFree(). *output_size will be updated to the size of the output buffer.
Parameters
input_dataInput data. Should not be NULL.
input_sizeSize of input data, in bytes.
output_dataPointer to output data.
output_sizePointer to output size.
optionsNULL terminated list of options. Or NULL.
compressor_user_dataUser data provided at registration time.
Returns
true in case of success.

Enumeration Type Documentation

◆ CPLCompressorType

Type of compressor.

Enumerator
CCT_COMPRESSOR 

Compressor.

CCT_FILTER 

Filter.

Function Documentation

◆ CPLGetCompressor()

const CPLCompressor * CPLGetCompressor ( const char *  pszId)

Return a compressor.

Parameters
pszIdCompressor id. Should NOT be NULL.
Returns
compressor structure, or NULL.
Since
GDAL 3.4

◆ CPLGetCompressors()

char ** CPLGetCompressors ( void  )

Return the list of registered compressors.

Returns
list of strings. Should be freed with CSLDestroy()
Since
GDAL 3.4

◆ CPLGetDecompressor()

const CPLCompressor * CPLGetDecompressor ( const char *  pszId)

Return a decompressor.

Parameters
pszIdDecompressor id. Should NOT be NULL.
Returns
compressor structure, or NULL.
Since
GDAL 3.4

◆ CPLGetDecompressors()

char ** CPLGetDecompressors ( void  )

Return the list of registered decompressors.

Returns
list of strings. Should be freed with CSLDestroy()
Since
GDAL 3.4

◆ CPLRegisterCompressor()

bool CPLRegisterCompressor ( const CPLCompressor compressor)

Register a new compressor.

The provided structure is copied. Its pfnFunc and user_data members should remain valid beyond this call however.

Parameters
compressorCompressor structure. Should not be null.
Returns
true if successful
Since
GDAL 3.4

◆ CPLRegisterDecompressor()

bool CPLRegisterDecompressor ( const CPLCompressor decompressor)

Register a new decompressor.

The provided structure is copied. Its pfnFunc and user_data members should remain valid beyond this call however.

Parameters
decompressorCompressor structure. Should not be null.
Returns
true if successful
Since
GDAL 3.4