Skip to content

Commit

Permalink
Merge pull request #276 from mrc-ide/mrc-3729
Browse files Browse the repository at this point in the history
Fix lint
  • Loading branch information
hillalex authored Oct 26, 2022
2 parents 35d1847 + 0881ac1 commit 76a6a83
Show file tree
Hide file tree
Showing 23 changed files with 207 additions and 142 deletions.
5 changes: 2 additions & 3 deletions .lintr
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
linters: with_defaults(
linters: linters_with_defaults(
object_name_linter = NULL,
object_length_linter = NULL,
object_usage_linter = NULL,
todo_comment_linter = NULL,
cyclocomp_linter = NULL
)
exclusions: list("tests/testthat.R")
exclusions: list("tests/testthat.R", "inst/template/odin_c.R")
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: odin
Title: ODE Generation and Integration
Version: 1.4.0
Version: 1.4.1
Authors@R: c(person("Rich", "FitzJohn", role = c("aut", "cre"),
email = "rich.fitzjohn@gmail.com"),
person("Thibaut", "Jombart", role = "ctb"),
Expand Down
5 changes: 3 additions & 2 deletions R/dependencies.R
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ join_deps <- function(x) {
stopifnot(is.list(x))
x <- x[!vlapply(x, is.null)]
## This should never be triggered
ok <- vlapply(x, function(el)
identical(names(el), c("functions", "variables")))
ok <- vlapply(x, function(el) {
identical(names(el), c("functions", "variables"))
})
stopifnot(all(ok))
if (length(x) == 0L) {
list(functions = character(0), variables = character(0))
Expand Down
24 changes: 14 additions & 10 deletions R/generate_c_compiled.R
Original file line number Diff line number Diff line change
Expand Up @@ -640,14 +640,16 @@ generate_c_compiled_metadata <- function(dat, rewrite) {
## TODO: we should generate out the the critical bits but that's
## another problem. See the comments in
## support_check_interpolate_t
args_min <- c_fold_call("fmax", vcapply(dat$interpolate$min, function(x)
sprintf("%s[0]", rewrite(x))))
args_min <- c_fold_call("fmax", vcapply(dat$interpolate$min, function(x) {
sprintf("%s[0]", rewrite(x))
}))
if (length(dat$interpolate$max) == 0) {
args_max <- "R_PosInf"
} else {
args_max <- c_fold_call("fmin", vcapply(dat$interpolate$max, function(x)
args_max <- c_fold_call("fmin", vcapply(dat$interpolate$max, function(x) {
sprintf("%s[%s - 1]", rewrite(x),
rewrite(dat$data$elements[[x]]$dimnames$length))))
rewrite(dat$data$elements[[x]]$dimnames$length))
}))
}

body$add("SEXP interpolate_t = PROTECT(allocVector(VECSXP, 3));")
Expand Down Expand Up @@ -700,8 +702,9 @@ generate_c_compiled_library <- function(dat, is_package) {
}
if (dat$features$has_user && dat$features$has_array) {
d <- dat$data$elements
user_arrays <- any(vlapply(dat$equations, function(x)
!is.null(x$user) && d[[x$name]]$rank > 0))
user_arrays <- any(vlapply(dat$equations, function(x) {
!is.null(x$user) && d[[x$name]]$rank > 0
}))
if (user_arrays) {
v <- c(v, "user_get_array_dim",
"user_get_array", "user_get_array_check",
Expand All @@ -715,8 +718,8 @@ generate_c_compiled_library <- function(dat, is_package) {
v <- c(v, "interpolate_check_y")
}

used <- unique(unlist(lapply(dat$equations, function(x)
x$depends$functions), FALSE, FALSE))
used <- unique(unlist(lapply(dat$equations, function(x) x$depends$functions),
FALSE, FALSE))
if ("%%" %in% used) {
v <- c(v, "fmodr")
}
Expand Down Expand Up @@ -746,8 +749,9 @@ generate_c_compiled_library <- function(dat, is_package) {
nms <- vcapply(extra, "[[", "name")
extra_lib <- list(
declarations = set_names(vcapply(extra, "[[", "declaration"), nms),
definitions = set_names(vcapply(extra, function(x)
paste0(x$definition, "\n", collapse = "")), nms))
definitions = set_names(vcapply(extra, function(x) {
paste0(x$definition, "\n", collapse = "")
}), nms))
lib <- join_library(list(lib, extra_lib))
}
}
Expand Down
7 changes: 4 additions & 3 deletions R/generate_c_equation.R
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,9 @@ generate_c_equation_inplace_rmhyper <- function(eq, lhs, data_info, dat,

generate_c_equation_array <- function(eq, data_info, dat, rewrite) {
lhs <- generate_c_equation_array_lhs(eq, data_info, dat, rewrite)
lapply(eq$rhs, function(x)
generate_c_equation_array_rhs(x$value, x$index, lhs, rewrite))
lapply(eq$rhs, function(x) {
generate_c_equation_array_rhs(x$value, x$index, lhs, rewrite)
})
}


Expand Down Expand Up @@ -447,7 +448,7 @@ generate_c_equation_delay_discrete <- function(eq, data_info, dat, rewrite) {
advance,
sprintf_safe("double * %s;", tail),
c_expr_if(time_check, data_initial, data_offset),
assign) -> ret
assign)
}


Expand Down
5 changes: 3 additions & 2 deletions R/generate_c_support.R
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ generate_c_support_sum <- function(rank) {
## here, though in general they are not needed as function scope
## avoids the worst of things.
index <- INDEX[i]
mult <- vcapply(seq_len(rank), function(x)
array_dim_name("x", paste(seq_len(x - 1), collapse = "")))
mult <- vcapply(seq_len(rank), function(x) {
array_dim_name("x", paste(seq_len(x - 1), collapse = ""))
})
counter <- vcapply(index, strrep, n = 2, USE.NAMES = FALSE)

limits <- rbind(sprintf_safe("from_%s", index),
Expand Down
31 changes: 18 additions & 13 deletions R/generate_js.R
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ generate_js <- function(ir, options) {
eqs <- generate_js_equations(dat, rewrite)
core <- generate_js_core(eqs, dat, rewrite)

internal_dim_elements <- vlapply(dat$data$elements, function(x)
internal_dim_elements <- vlapply(dat$data$elements, function(x) {
x$location == "internal" &&
x$storage_type %in% c("double", "int", "bool") &&
x$rank > 1)
x$rank > 1
})
internal_dim <- lapply(dat$data$elements[internal_dim_elements],
function(x) x$dimnames$dim)

Expand Down Expand Up @@ -203,26 +204,28 @@ generate_js_core_update_metadata <- function(eqs, dat, rewrite) {
}

if (dat$features$has_interpolate) {
args_min <- js_fold_call("Math.max",
vcapply(dat$interpolate$min, function(x)
sprintf("%s[0]", rewrite(x))))
args_min <- js_fold_call(
"Math.max",
vcapply(dat$interpolate$min, function(x) sprintf("%s[0]", rewrite(x))))
if (length(dat$interpolate$max) == 0) {
args_max <- "Infinity"
} else {
args_max <- js_fold_call(
"Math.min",
vcapply(dat$interpolate$max, function(x)
vcapply(dat$interpolate$max, function(x) {
sprintf("%s[%s - 1]", rewrite(x),
rewrite(dat$data$elements[[x]]$dimnames$length))))
rewrite(dat$data$elements[[x]]$dimnames$length))
}))
}
}

len_block <- function(location) {
if (location == "internal") {
## This excludes interpolate_data and ring_buffer
keep <- vlapply(dat$data$elements, function(x)
keep <- vlapply(dat$data$elements, function(x) {
x$location == "internal" &&
x$storage_type %in% c("double", "int", "bool"))
x$storage_type %in% c("double", "int", "bool")
})
contents <- dat$data$elements[keep]
} else {
contents <- dat$data$elements[names(dat$data[[location]]$contents)]
Expand All @@ -240,11 +243,13 @@ generate_js_core_update_metadata <- function(eqs, dat, rewrite) {
body$add(len_block("output"))

if (dat$features$has_interpolate) {
args_min <- vcapply(dat$interpolate$min, function(x)
sprintf("%s[0]", rewrite(x)))
args_max <- vcapply(dat$interpolate$max, function(x)
args_min <- vcapply(dat$interpolate$min, function(x) {
sprintf("%s[0]", rewrite(x))
})
args_max <- vcapply(dat$interpolate$max, function(x) {
sprintf("%s[%s - 1]", rewrite(x),
rewrite(dat$data$elements[[x]]$dimnames$length)))
rewrite(dat$data$elements[[x]]$dimnames$length))
})
array <- function(x) {
sprintf("[%s]", paste(x, collapse = ", "))
}
Expand Down
5 changes: 3 additions & 2 deletions R/generate_js_equation.R
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,9 @@ generate_js_equation_user <- function(eq, data_info, dat, rewrite) {

generate_js_equation_array <- function(eq, data_info, dat, rewrite) {
lhs <- generate_js_equation_array_lhs(eq, data_info, dat, rewrite)
lapply(eq$rhs, function(x)
generate_js_equation_array_rhs(x$value, x$index, lhs, rewrite))
lapply(eq$rhs, function(x) {
generate_js_equation_array_rhs(x$value, x$index, lhs, rewrite)
})
}


Expand Down
15 changes: 9 additions & 6 deletions R/generate_r.R
Original file line number Diff line number Diff line change
Expand Up @@ -267,16 +267,18 @@ generate_r_interpolate_t <- function(dat, env, rewrite) {
return(function(...) NULL)
}

args_min <- lapply(dat$interpolate$min, function(x)
call("[[", rewrite(x), 1L))
args_min <- lapply(dat$interpolate$min, function(x) {
call("[[", rewrite(x), 1L)
})
if (length(args_min) == 1L) {
min <- args_min[[1L]]
} else {
min <- as.call(c(list(quote(max)), args_min))
}

args_max <- lapply(dat$interpolate$max, function(x)
call("[[", rewrite(x), call("length", rewrite(x))))
args_max <- lapply(dat$interpolate$max, function(x) {
call("[[", rewrite(x), call("length", rewrite(x)))
})
if (length(args_max) == 0L) {
max <- Inf
} else if (length(args_max) == 1L) {
Expand Down Expand Up @@ -310,10 +312,11 @@ generate_r_set_initial <- function(dat, env, rewrite) {

set_y <- call(
"if", call("!", call("is.null", as.name(dat$meta$state))),
r_expr_block(lapply(dat$data$variable$contents, function(x)
r_expr_block(lapply(dat$data$variable$contents, function(x) {
call("<-", rewrite(x$initial),
r_extract_variable(x, dat$data$elements, as.name(dat$meta$state),
rewrite)))))
rewrite))
})))
set_t <- call("<-", rewrite(dat$meta$initial_time), as.name(dat$meta$time))

body <- list(set_y, set_t)
Expand Down
7 changes: 4 additions & 3 deletions R/generate_r_equation.R
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,9 @@ generate_r_equation_inplace <- function(eq, data_info, dat, rewrite) {

generate_r_equation_array <- function(eq, data_info, dat, rewrite) {
lhs <- generate_r_equation_array_lhs(eq, data_info, dat, rewrite)
lapply(eq$rhs, function(x)
generate_r_equation_array_rhs(x$value, x$index, lhs, rewrite))
lapply(eq$rhs, function(x) {
generate_r_equation_array_rhs(x$value, x$index, lhs, rewrite)
})
}


Expand Down Expand Up @@ -143,7 +144,7 @@ generate_r_equation_copy <- function(eq, data_info, dat, rewrite) {

if (data_info$rank == 0) {
lhs <- call("[[", storage, r_offset_to_position(offset))
} else{
} else {
i <- call("seq_len", rewrite(data_info$dimnames$length))
lhs <- call("[", storage, call("+", offset, i))
}
Expand Down
Loading

0 comments on commit 76a6a83

Please sign in to comment.