Program Listing for File factorizer_templates.hpp
↰ Return to documentation for file (src/cpp/factorizer_templates.hpp)
#ifndef FACTORIZER_TEMPLATES_HPP
#define FACTORIZER_TEMPLATES_HPP
#include "factorizer.hpp"
#include "factorizer_helpers.hpp"
namespace noLZSS {
template<class Sink>
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>(sink), start_pos);
}
template<class Sink>
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>(sink), start_pos);
}
template<class Sink>
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<char>(file)),
std::istreambuf_iterator<char>());
return nolzss_multiple_dna_w_rc(text, std::forward<Sink>(sink), start_pos);
}
} // namespace noLZSS
#endif // FACTORIZER_TEMPLATES_HPP