1 2#' @rdname wk_handle 3#' @export 4wk_handle.wk_crc <- function(handleable, handler, ..., 5 n_segments = getOption("wk.crc_n_segments", NULL), 6 resolution = getOption("wk.crc_resolution", NULL)) { 7 if (is.null(n_segments) && is.null(resolution)) { 8 n_segments <- 100L 9 } else if (is.null(n_segments)) { 10 n_segments <- ceiling(2 * pi / (resolution / unclass(handleable)$r)) 11 } 12 13 n_segments <- as.integer(pmax(4L, n_segments)) 14 n_segments[is.na(n_segments)] <- 4L 15 16 if ((length(n_segments) != 1) && (length(n_segments) != length(handleable))) { 17 stop( 18 sprintf( 19 "`n_segments`/`resolution` must be length 1 or length of data (%s)", 20 length(handleable) 21 ), 22 call. = FALSE 23 ) 24 } 25 26 handler <- as_wk_handler(handler) 27 .Call(wk_c_read_crc, handleable, handler, n_segments) 28} 29