Skip to content

Commit

Permalink
Allow passing number of rows from outside
Browse files Browse the repository at this point in the history
  • Loading branch information
krlmlr committed May 10, 2022
1 parent 322e5ee commit 56df153
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions inst/include/cpp11/data_frame.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,18 @@ class data_frame : public list {
namespace writable {
class data_frame : public cpp11::data_frame {
private:
writable::list set_data_frame_attributes(writable::list&& x) {
x.attr(R_RowNamesSymbol) = {NA_INTEGER, -static_cast<int>(calc_nrow(x))};
writable::list set_data_frame_attributes(writable::list&& x, int nrow) {
x.attr(R_RowNamesSymbol) = {NA_INTEGER, -nrow};
x.attr(R_ClassSymbol) = "data.frame";
return std::move(x);
}

public:
data_frame(const SEXP data) : cpp11::data_frame(set_data_frame_attributes(data)) {}
data_frame(const SEXP data) : cpp11::data_frame(set_data_frame_attributes(data, calc_nrow(data))) {}
data_frame(const SEXP data, bool is_altrep)
: cpp11::data_frame(set_data_frame_attributes(data), is_altrep) {}
data_frame(const SEXP data, bool is_altrep, int nrow)
: cpp11::data_frame(set_data_frame_attributes(data, nrow), is_altrep) {}
data_frame(std::initializer_list<list> il)
: cpp11::data_frame(set_data_frame_attributes(writable::list(il))) {}
data_frame(std::initializer_list<named_arg> il)
Expand Down

0 comments on commit 56df153

Please sign in to comment.