Skip to content

Commit 8831709

Browse files
committed
implementation of #179
1 parent 5ada898 commit 8831709

8 files changed

+83
-2
lines changed

NAMESPACE

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ S3method(get_queue_size,wrap)
3737
S3method(get_queue_size_selected,simmer)
3838
S3method(get_resources,simmer)
3939
S3method(get_resources,wrap)
40+
S3method(get_seized,simmer)
41+
S3method(get_seized_selected,simmer)
4042
S3method(get_selected,simmer)
4143
S3method(get_server_count,simmer)
4244
S3method(get_server_count,wrap)
@@ -114,6 +116,8 @@ export(get_queue_count_selected)
114116
export(get_queue_size)
115117
export(get_queue_size_selected)
116118
export(get_resources)
119+
export(get_seized)
120+
export(get_seized_selected)
117121
export(get_selected)
118122
export(get_server_count)
119123
export(get_server_count_selected)

R/RcppExports.R

+8
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,14 @@ get_queue_count_selected_ <- function(sim_, id) {
377377
.Call(`_simmer_get_queue_count_selected_`, sim_, id)
378378
}
379379

380+
get_seized_ <- function(sim_, names) {
381+
.Call(`_simmer_get_seized_`, sim_, names)
382+
}
383+
384+
get_seized_selected_ <- function(sim_, id) {
385+
.Call(`_simmer_get_seized_selected_`, sim_, id)
386+
}
387+
380388
get_selected_ <- function(sim_, id) {
381389
.Call(`_simmer_get_selected_`, sim_, id)
382390
}

R/simmer-class.R

+9
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,15 @@ Simmer <- R6Class("simmer",
287287
)
288288
},
289289

290+
get_seized = function(resources, id=0) {
291+
check_args(resources=c("string vector", "NULL"), id="numeric")
292+
ret <- switch(
293+
binarise(is.null(resources)),
294+
get_seized_(private$sim_obj, resources),
295+
get_seized_selected_(private$sim_obj, id)
296+
)
297+
},
298+
290299
get_selected = function(id=0) {
291300
check_args(id="numeric")
292301
get_selected_(private$sim_obj, id)

R/simmer-methods.R

+16-1
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,14 @@
4040
#' \code{\link{get_server_count}}, \code{\link{get_queue_count}},
4141
#' \code{\link{get_capacity_selected}}, \code{\link{get_queue_size_selected}},
4242
#' \code{\link{get_server_count_selected}}, \code{\link{get_queue_count_selected}},
43+
#' \code{\link{get_seized}}, \code{\link{get_seized_selected}},
4344
#' \code{\link{get_selected}}
4445
#'
4546
#' \item Sources: \code{\link{add_generator}}, \code{\link{add_dataframe}},
4647
#' \code{\link{get_sources}}, \code{\link{get_n_generated}},
4748
#' \code{\link{get_trajectory}}
4849
#'
49-
#' \item Globals: \code{\link{add_global}}, \code{\link{get_global}}.
50+
#' \item Globals: \code{\link{add_global}}, \code{\link{get_global}}
5051
#'
5152
#' \item Data retrieval: \code{\link{get_mon_arrivals}},
5253
#' \code{\link{get_mon_attributes}}, \code{\link{get_mon_resources}}
@@ -502,6 +503,20 @@ get_queue_count_selected <- function(.env, id=0) UseMethod("get_queue_count_sele
502503
#' @export
503504
get_queue_count_selected.simmer <- function(.env, id=0) .env$get_queue_count(NULL, id)
504505

506+
#' @rdname get_capacity
507+
#' @export
508+
get_seized <- function(.env, resources) UseMethod("get_seized")
509+
510+
#' @export
511+
get_seized.simmer <- function(.env, resources) .env$get_seized(resources)
512+
513+
#' @rdname get_capacity
514+
#' @export
515+
get_seized_selected <- function(.env, id=0) UseMethod("get_seized_selected")
516+
517+
#' @export
518+
get_seized_selected.simmer <- function(.env, id=0) .env$get_seized(NULL, id)
519+
505520
#' @rdname get_capacity
506521
#' @export
507522
get_selected <- function(.env, id=0) UseMethod("get_selected")

man/get_capacity.Rd

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/simmer.Rd

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/RcppExports.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -1153,6 +1153,30 @@ BEGIN_RCPP
11531153
return rcpp_result_gen;
11541154
END_RCPP
11551155
}
1156+
// get_seized_
1157+
std::vector<int> get_seized_(SEXP sim_, const std::vector<std::string>& names);
1158+
RcppExport SEXP _simmer_get_seized_(SEXP sim_SEXP, SEXP namesSEXP) {
1159+
BEGIN_RCPP
1160+
Rcpp::RObject rcpp_result_gen;
1161+
Rcpp::RNGScope rcpp_rngScope_gen;
1162+
Rcpp::traits::input_parameter< SEXP >::type sim_(sim_SEXP);
1163+
Rcpp::traits::input_parameter< const std::vector<std::string>& >::type names(namesSEXP);
1164+
rcpp_result_gen = Rcpp::wrap(get_seized_(sim_, names));
1165+
return rcpp_result_gen;
1166+
END_RCPP
1167+
}
1168+
// get_seized_selected_
1169+
std::vector<int> get_seized_selected_(SEXP sim_, int id);
1170+
RcppExport SEXP _simmer_get_seized_selected_(SEXP sim_SEXP, SEXP idSEXP) {
1171+
BEGIN_RCPP
1172+
Rcpp::RObject rcpp_result_gen;
1173+
Rcpp::RNGScope rcpp_rngScope_gen;
1174+
Rcpp::traits::input_parameter< SEXP >::type sim_(sim_SEXP);
1175+
Rcpp::traits::input_parameter< int >::type id(idSEXP);
1176+
rcpp_result_gen = Rcpp::wrap(get_seized_selected_(sim_, id));
1177+
return rcpp_result_gen;
1178+
END_RCPP
1179+
}
11561180
// get_selected_
11571181
std::vector<std::string> get_selected_(SEXP sim_, int id);
11581182
RcppExport SEXP _simmer_get_selected_(SEXP sim_SEXP, SEXP idSEXP) {
@@ -1431,6 +1455,8 @@ static const R_CallMethodDef CallEntries[] = {
14311455
{"_simmer_get_server_count_selected_", (DL_FUNC) &_simmer_get_server_count_selected_, 2},
14321456
{"_simmer_get_queue_count_", (DL_FUNC) &_simmer_get_queue_count_, 2},
14331457
{"_simmer_get_queue_count_selected_", (DL_FUNC) &_simmer_get_queue_count_selected_, 2},
1458+
{"_simmer_get_seized_", (DL_FUNC) &_simmer_get_seized_, 2},
1459+
{"_simmer_get_seized_selected_", (DL_FUNC) &_simmer_get_seized_selected_, 2},
14341460
{"_simmer_get_selected_", (DL_FUNC) &_simmer_get_selected_, 2},
14351461
{"_simmer_Simulator__new", (DL_FUNC) &_simmer_Simulator__new, 4},
14361462
{"_simmer_reset_", (DL_FUNC) &_simmer_reset_, 1},

src/resource.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,18 @@ std::vector<int> get_queue_count_selected_(SEXP sim_, int id) {
8686
return get_param<int>(sim_, id, boost::mem_fn(&Resource::get_queue_count));
8787
}
8888

89+
//[[Rcpp::export]]
90+
std::vector<int> get_seized_(SEXP sim_, const std::vector<std::string>& names) {
91+
return get_param<int>(sim_, names, BIND(
92+
&Resource::get_seized, _1, XPtr<Simulator>(sim_)->get_running_arrival()));
93+
}
94+
95+
//[[Rcpp::export]]
96+
std::vector<int> get_seized_selected_(SEXP sim_, int id) {
97+
return get_param<int>(sim_, id, BIND(
98+
&Resource::get_seized, _1, XPtr<Simulator>(sim_)->get_running_arrival()));
99+
}
100+
89101
std::string get_name(Resource* res) { return res->name; }
90102

91103
//[[Rcpp::export]]

0 commit comments

Comments
 (0)