Libosmium  2.20.0
Fast and flexible C++ library for working with OpenStreetMap data
Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
osmium::io::CompressionFactory Class Reference

#include <compression.hpp>

Public Types

using create_compressor_type = std::function< osmium::io::Compressor *(int, fsync)>
 
using create_decompressor_type_fd = std::function< osmium::io::Decompressor *(int)>
 
using create_decompressor_type_buffer = std::function< osmium::io::Decompressor *(const char *, std::size_t)>
 

Public Member Functions

 CompressionFactory (const CompressionFactory &)=delete
 
CompressionFactoryoperator= (const CompressionFactory &)=delete
 
 CompressionFactory (CompressionFactory &&)=delete
 
CompressionFactoryoperator= (CompressionFactory &&)=delete
 
 ~CompressionFactory () noexcept=default
 
bool register_compression (osmium::io::file_compression compression, const create_compressor_type &create_compressor, const create_decompressor_type_fd &create_decompressor_fd, const create_decompressor_type_buffer &create_decompressor_buffer)
 
template<typename... TArgs>
std::unique_ptr< osmium::io::Compressorcreate_compressor (const osmium::io::file_compression compression, TArgs &&... args) const
 
std::unique_ptr< osmium::io::Decompressorcreate_decompressor (const osmium::io::file_compression compression, const int fd) const
 
std::unique_ptr< osmium::io::Decompressorcreate_decompressor (const osmium::io::file_compression compression, const char *buffer, const std::size_t size) const
 

Static Public Member Functions

static CompressionFactoryinstance ()
 

Private Types

using callbacks_type = std::tuple< create_compressor_type, create_decompressor_type_fd, create_decompressor_type_buffer >
 
using compression_map_type = std::map< const osmium::io::file_compression, callbacks_type >
 

Private Member Functions

 CompressionFactory ()=default
 
const callbacks_typefind_callbacks (const osmium::io::file_compression compression) const
 

Private Attributes

compression_map_type m_callbacks
 

Detailed Description

This singleton factory class is used to register compression algorithms used for reading and writing OSM files.

For each algorithm we store two functions that construct a compressor and decompressor object, respectively.

Member Typedef Documentation

◆ callbacks_type

◆ compression_map_type

◆ create_compressor_type

◆ create_decompressor_type_buffer

◆ create_decompressor_type_fd

Constructor & Destructor Documentation

◆ CompressionFactory() [1/3]

osmium::io::CompressionFactory::CompressionFactory ( )
privatedefault

◆ CompressionFactory() [2/3]

osmium::io::CompressionFactory::CompressionFactory ( const CompressionFactory )
delete

◆ CompressionFactory() [3/3]

osmium::io::CompressionFactory::CompressionFactory ( CompressionFactory &&  )
delete

◆ ~CompressionFactory()

osmium::io::CompressionFactory::~CompressionFactory ( )
defaultnoexcept

Member Function Documentation

◆ create_compressor()

template<typename... TArgs>
std::unique_ptr< osmium::io::Compressor > osmium::io::CompressionFactory::create_compressor ( const osmium::io::file_compression  compression,
TArgs &&...  args 
) const
inline

◆ create_decompressor() [1/2]

std::unique_ptr< osmium::io::Decompressor > osmium::io::CompressionFactory::create_decompressor ( const osmium::io::file_compression  compression,
const char *  buffer,
const std::size_t  size 
) const
inline

◆ create_decompressor() [2/2]

std::unique_ptr< osmium::io::Decompressor > osmium::io::CompressionFactory::create_decompressor ( const osmium::io::file_compression  compression,
const int  fd 
) const
inline

◆ find_callbacks()

const callbacks_type & osmium::io::CompressionFactory::find_callbacks ( const osmium::io::file_compression  compression) const
inlineprivate

◆ instance()

static CompressionFactory & osmium::io::CompressionFactory::instance ( )
inlinestatic

◆ operator=() [1/2]

CompressionFactory & osmium::io::CompressionFactory::operator= ( CompressionFactory &&  )
delete

◆ operator=() [2/2]

CompressionFactory & osmium::io::CompressionFactory::operator= ( const CompressionFactory )
delete

◆ register_compression()

bool osmium::io::CompressionFactory::register_compression ( osmium::io::file_compression  compression,
const create_compressor_type create_compressor,
const create_decompressor_type_fd create_decompressor_fd,
const create_decompressor_type_buffer create_decompressor_buffer 
)
inline

Member Data Documentation

◆ m_callbacks

compression_map_type osmium::io::CompressionFactory::m_callbacks
private

The documentation for this class was generated from the following file: