diff --git a/NEWS.md b/NEWS.md index 7971e97..d581285 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # lobstr (development version) +* `obj_sizes()` no longer returns NA for objects larger than 2^31 bytes (#45) + # lobstr 1.1.1 * Fix PROTECT error. diff --git a/R/cpp11.R b/R/cpp11.R index 1af2e64..08ec389 100644 --- a/R/cpp11.R +++ b/R/cpp11.R @@ -1,26 +1,25 @@ # Generated by cpp11: do not edit by hand obj_addr_ <- function(name, env) { - .Call("_lobstr_obj_addr_", name, env) + .Call("_lobstr_obj_addr_", name, env, PACKAGE = "lobstr") } obj_addrs_ <- function(x) { - .Call("_lobstr_obj_addrs_", x) + .Call("_lobstr_obj_addrs_", x, PACKAGE = "lobstr") } obj_inspect_ <- function(x, max_depth, expand_char, expand_altrep, expand_env, expand_call, expand_bytecode) { - .Call("_lobstr_obj_inspect_", x, max_depth, expand_char, expand_altrep, expand_env, expand_call, expand_bytecode) + .Call("_lobstr_obj_inspect_", x, max_depth, expand_char, expand_altrep, expand_env, expand_call, expand_bytecode, PACKAGE = "lobstr") } v_size <- function(n, element_size) { - .Call("_lobstr_v_size", n, element_size) + .Call("_lobstr_v_size", n, element_size, PACKAGE = "lobstr") } obj_size_ <- function(objects, base_env, sizeof_node, sizeof_vector) { - .Call("_lobstr_obj_size_", objects, base_env, sizeof_node, sizeof_vector) + .Call("_lobstr_obj_size_", objects, base_env, sizeof_node, sizeof_vector, PACKAGE = "lobstr") } obj_csize_ <- function(objects, base_env, sizeof_node, sizeof_vector) { - .Call("_lobstr_obj_csize_", objects, base_env, sizeof_node, sizeof_vector) + .Call("_lobstr_obj_csize_", objects, base_env, sizeof_node, sizeof_vector, PACKAGE = "lobstr") } - diff --git a/src/cpp11.cpp b/src/cpp11.cpp index 5828199..d97db52 100644 --- a/src/cpp11.cpp +++ b/src/cpp11.cpp @@ -1,4 +1,5 @@ // Generated by cpp11: do not edit by hand +// clang-format off #include "cpp11/declarations.hpp" @@ -7,42 +8,42 @@ std::string obj_addr_(SEXP name, cpp11::environment env); extern "C" SEXP _lobstr_obj_addr_(SEXP name, SEXP env) { BEGIN_CPP11 - return cpp11::as_sexp(obj_addr_(cpp11::unmove(cpp11::as_cpp(name)), cpp11::unmove(cpp11::as_cpp(env)))); + return cpp11::as_sexp(obj_addr_(cpp11::as_cpp>(name), cpp11::as_cpp>(env))); END_CPP11 } // address.cpp std::vector obj_addrs_(SEXP x); extern "C" SEXP _lobstr_obj_addrs_(SEXP x) { BEGIN_CPP11 - return cpp11::as_sexp(obj_addrs_(cpp11::unmove(cpp11::as_cpp(x)))); + return cpp11::as_sexp(obj_addrs_(cpp11::as_cpp>(x))); END_CPP11 } // inspect.cpp cpp11::list obj_inspect_(SEXP x, double max_depth, bool expand_char, bool expand_altrep, bool expand_env, bool expand_call, bool expand_bytecode); extern "C" SEXP _lobstr_obj_inspect_(SEXP x, SEXP max_depth, SEXP expand_char, SEXP expand_altrep, SEXP expand_env, SEXP expand_call, SEXP expand_bytecode) { BEGIN_CPP11 - return cpp11::as_sexp(obj_inspect_(cpp11::unmove(cpp11::as_cpp(x)), cpp11::unmove(cpp11::as_cpp(max_depth)), cpp11::unmove(cpp11::as_cpp(expand_char)), cpp11::unmove(cpp11::as_cpp(expand_altrep)), cpp11::unmove(cpp11::as_cpp(expand_env)), cpp11::unmove(cpp11::as_cpp(expand_call)), cpp11::unmove(cpp11::as_cpp(expand_bytecode)))); + return cpp11::as_sexp(obj_inspect_(cpp11::as_cpp>(x), cpp11::as_cpp>(max_depth), cpp11::as_cpp>(expand_char), cpp11::as_cpp>(expand_altrep), cpp11::as_cpp>(expand_env), cpp11::as_cpp>(expand_call), cpp11::as_cpp>(expand_bytecode))); END_CPP11 } // size.cpp double v_size(double n, int element_size); extern "C" SEXP _lobstr_v_size(SEXP n, SEXP element_size) { BEGIN_CPP11 - return cpp11::as_sexp(v_size(cpp11::unmove(cpp11::as_cpp(n)), cpp11::unmove(cpp11::as_cpp(element_size)))); + return cpp11::as_sexp(v_size(cpp11::as_cpp>(n), cpp11::as_cpp>(element_size))); END_CPP11 } // size.cpp double obj_size_(cpp11::list objects, cpp11::environment base_env, int sizeof_node, int sizeof_vector); extern "C" SEXP _lobstr_obj_size_(SEXP objects, SEXP base_env, SEXP sizeof_node, SEXP sizeof_vector) { BEGIN_CPP11 - return cpp11::as_sexp(obj_size_(cpp11::unmove(cpp11::as_cpp(objects)), cpp11::unmove(cpp11::as_cpp(base_env)), cpp11::unmove(cpp11::as_cpp(sizeof_node)), cpp11::unmove(cpp11::as_cpp(sizeof_vector)))); + return cpp11::as_sexp(obj_size_(cpp11::as_cpp>(objects), cpp11::as_cpp>(base_env), cpp11::as_cpp>(sizeof_node), cpp11::as_cpp>(sizeof_vector))); END_CPP11 } // size.cpp -cpp11::integers obj_csize_(cpp11::list objects, cpp11::environment base_env, int sizeof_node, int sizeof_vector); +cpp11::doubles obj_csize_(cpp11::list objects, cpp11::environment base_env, int sizeof_node, int sizeof_vector); extern "C" SEXP _lobstr_obj_csize_(SEXP objects, SEXP base_env, SEXP sizeof_node, SEXP sizeof_vector) { BEGIN_CPP11 - return cpp11::as_sexp(obj_csize_(cpp11::unmove(cpp11::as_cpp(objects)), cpp11::unmove(cpp11::as_cpp(base_env)), cpp11::unmove(cpp11::as_cpp(sizeof_node)), cpp11::unmove(cpp11::as_cpp(sizeof_vector)))); + return cpp11::as_sexp(obj_csize_(cpp11::as_cpp>(objects), cpp11::as_cpp>(base_env), cpp11::as_cpp>(sizeof_node), cpp11::as_cpp>(sizeof_vector))); END_CPP11 } @@ -70,4 +71,3 @@ extern "C" void R_init_lobstr(DllInfo* dll){ R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); } - diff --git a/src/size.cpp b/src/size.cpp index 8ac109f..4f5c302 100644 --- a/src/size.cpp +++ b/src/size.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -211,11 +211,11 @@ double obj_size_(cpp11::list objects, cpp11::environment base_env, int sizeof_no } [[cpp11::register]] -cpp11::integers obj_csize_(cpp11::list objects, cpp11::environment base_env, int sizeof_node, int sizeof_vector) { +cpp11::doubles obj_csize_(cpp11::list objects, cpp11::environment base_env, int sizeof_node, int sizeof_vector) { std::set seen; int n = objects.size(); - cpp11::writable::integers out(n); + cpp11::writable::doubles out(n); for (int i = 0; i < n; ++i) { out[i] = out[i] + obj_size_tree(objects[i], base_env, sizeof_node, sizeof_vector, seen, 0); }