Пример #1
0
            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);
            }
Пример #2
0
            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);
            }
Пример #3
0
            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);
            }
Пример #4
0
            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};
            }
Пример #5
0
            bool register_compression(
                osmium::io::file_compression compression,
                create_compressor_type create_compressor,
                create_decompressor_type_fd create_decompressor_fd,
                create_decompressor_type_buffer create_decompressor_buffer) {

                compression_map_type::value_type cc(compression, std::make_tuple(create_compressor, create_decompressor_fd, create_decompressor_buffer));
                return m_callbacks.insert(cc).second;
            }