static FASTQ_loaderExt new_FASTQ_loaderExt(SEXP ans, SEXP lkup) { FASTQ_loaderExt loader_ext; loader_ext.ans_names_buf = new_CharAEAE(_get_XStringSet_length(ans), 0); loader_ext.ans_holder = hold_XVectorList(ans); if (lkup == R_NilValue) { loader_ext.lkup = NULL; loader_ext.lkup_length = 0; } else { loader_ext.lkup = INTEGER(lkup); loader_ext.lkup_length = LENGTH(lkup); } return loader_ext; }
/* --- .Call ENTRY POINT --- * Arguments are the same as for XString_match_pattern() except for: * subject: XStringSet object. */ SEXP XStringSet_vmatch_pattern(SEXP pattern, SEXP subject, SEXP max_mismatch, SEXP min_mismatch, SEXP with_indels, SEXP fixed, SEXP algorithm, SEXP ms_mode) { Chars_holder P, S_elt; XStringSet_holder S; int S_length, j; const char *algo; P = hold_XRaw(pattern); S = _hold_XStringSet(subject); S_length = _get_XStringSet_length(subject); algo = CHAR(STRING_ELT(algorithm, 0)); _init_match_reporting(CHAR(STRING_ELT(ms_mode, 0)), S_length); for (j = 0; j < S_length; j++) { S_elt = _get_elt_from_XStringSet_holder(&S, j); _set_active_PSpair(j); _match_pattern_XString(&P, &S_elt, max_mismatch, min_mismatch, with_indels, fixed, algo); } return _MatchBuf_as_SEXP(_get_internal_match_buf(), R_NilValue); }