std::unique_ptr<osmium::io::Decompressor> create_decompressor(osmium::io::file_compression compression, const char* buffer, size_t size) { auto it = m_callbacks.find(compression); if (it != m_callbacks.end()) { return std::unique_ptr<osmium::io::Decompressor>(std::get<2>(it->second)(buffer, size)); } error(compression); }
std::unique_ptr<osmium::io::Compressor> create_compressor(osmium::io::file_compression compression, TArgs&&... args) { auto it = m_callbacks.find(compression); if (it != m_callbacks.end()) { return std::unique_ptr<osmium::io::Compressor>(std::get<0>(it->second)(std::forward<TArgs>(args)...)); } error(compression); }
std::unique_ptr<osmium::io::Decompressor> create_decompressor(osmium::io::file_compression compression, int fd) { auto it = m_callbacks.find(compression); if (it != m_callbacks.end()) { return std::unique_ptr<osmium::io::Decompressor>(std::get<1>(it->second)(fd)); } error(compression); }
const callbacks_type& find_callbacks(osmium::io::file_compression compression) const { const auto it = m_callbacks.find(compression); if (it != m_callbacks.end()) { return it->second; } std::string error_message{"Support for compression '"}; error_message += as_string(compression); error_message += "' not compiled into this binary"; throw unsupported_file_format_error{error_message}; }