-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy pathclass_lookup.R
More file actions
53 lines (43 loc) · 1.04 KB
/
class_lookup.R
File metadata and controls
53 lines (43 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
lookup_init <- function(list, parent = emptyenv()) {
list2env(x = list, parent = parent, hash = TRUE)
}
lookup_new <- function(parent = emptyenv()) {
new.env(parent = parent, hash = TRUE)
}
lookup_exists <- function(lookup, name) {
!is.null(.subset2(lookup, name))
}
lookup_missing <- function(lookup, name) {
is.null(.subset2(lookup, name))
}
lookup_get <- function(lookup, name) {
.subset2(lookup, name)
}
lookup_list <- function(lookup) {
as.character(names(lookup))
}
lookup_count <- function(lookup) {
length(lookup_list(lookup))
}
lookup_set <- function(lookup, names, object) {
index <- 1L
n <- length(names)
while (index <= n) {
lookup[[.subset(names, index)]] <- object
index <- index + 1L
}
}
lookup_unset <- function(lookup, names) {
index <- 1L
n <- length(names)
while (index <= n) {
lookup[[.subset(names, index)]] <- NULL
index <- index + 1L
}
}
lookup_remove <- function(lookup, names) {
remove(list = names, envir = lookup)
}
lookup_validate <- function(lookup) {
tar_assert_envir(lookup)
}