// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// hash_string
IntegerVector hash_string(std::vector < std::string > x);
RcppExport SEXP _textreuse_hash_string(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::vector < std::string > >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(hash_string(x));
    return rcpp_result_gen;
END_RCPP
}
// shingle_ngrams
CharacterVector shingle_ngrams(CharacterVector words, int n);
RcppExport SEXP _textreuse_shingle_ngrams(SEXP wordsSEXP, SEXP nSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type words(wordsSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    rcpp_result_gen = Rcpp::wrap(shingle_ngrams(words, n));
    return rcpp_result_gen;
END_RCPP
}
// skip_ngrams
CharacterVector skip_ngrams(CharacterVector words, int n, int k);
RcppExport SEXP _textreuse_skip_ngrams(SEXP wordsSEXP, SEXP nSEXP, SEXP kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type words(wordsSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    rcpp_result_gen = Rcpp::wrap(skip_ngrams(words, n, k));
    return rcpp_result_gen;
END_RCPP
}
// sw_matrix
IntegerMatrix sw_matrix(IntegerMatrix m, CharacterVector a, CharacterVector b, int match, int mismatch, int gap, bool progress);
RcppExport SEXP _textreuse_sw_matrix(SEXP mSEXP, SEXP aSEXP, SEXP bSEXP, SEXP matchSEXP, SEXP mismatchSEXP, SEXP gapSEXP, SEXP progressSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerMatrix >::type m(mSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type a(aSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type b(bSEXP);
    Rcpp::traits::input_parameter< int >::type match(matchSEXP);
    Rcpp::traits::input_parameter< int >::type mismatch(mismatchSEXP);
    Rcpp::traits::input_parameter< int >::type gap(gapSEXP);
    Rcpp::traits::input_parameter< bool >::type progress(progressSEXP);
    rcpp_result_gen = Rcpp::wrap(sw_matrix(m, a, b, match, mismatch, gap, progress));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_textreuse_hash_string", (DL_FUNC) &_textreuse_hash_string, 1},
    {"_textreuse_shingle_ngrams", (DL_FUNC) &_textreuse_shingle_ngrams, 2},
    {"_textreuse_skip_ngrams", (DL_FUNC) &_textreuse_skip_ngrams, 3},
    {"_textreuse_sw_matrix", (DL_FUNC) &_textreuse_sw_matrix, 7},
    {NULL, NULL, 0}
};

RcppExport void R_init_textreuse(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
