.. _program_listing_file_src_cpp_factorizer_templates.hpp: Program Listing for File factorizer_templates.hpp ================================================= |exhale_lsh| :ref:`Return to documentation for file ` (``src/cpp/factorizer_templates.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef FACTORIZER_TEMPLATES_HPP #define FACTORIZER_TEMPLATES_HPP #include "factorizer.hpp" #include "factorizer_helpers.hpp" namespace noLZSS { template size_t factorize_stream(std::string_view text, Sink&& sink, size_t start_pos) { std::string tmp(text); cst_t cst; construct_im(cst, tmp, 1); return nolzss(cst, std::forward(sink), start_pos); } template size_t factorize_stream_multiple_dna_w_rc( std::string_view text, Sink&& sink, size_t start_pos ) { std::string tmp(text); return nolzss_multiple_dna_w_rc(tmp, std::forward(sink), start_pos); } template size_t factorize_file_stream_multiple_dna_w_rc( const std::string& filepath, Sink&& sink, size_t start_pos ) { // Read file into string first std::ifstream file(filepath, std::ios::binary); if (!file) { throw std::runtime_error("Cannot open file: " + filepath); } std::string text((std::istreambuf_iterator(file)), std::istreambuf_iterator()); return nolzss_multiple_dna_w_rc(text, std::forward(sink), start_pos); } } // namespace noLZSS #endif // FACTORIZER_TEMPLATES_HPP