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