// [[Rcpp::export]] Rcpp::List clist2mlist(Rcpp::List clist, int nthreads=1){ if (clist.length()==0) Rcpp::stop("empty list is invalid"); int ncounts, nmarks, nbins = -1; std::vector<std::string> rnames; listcubedim(clist, &nmarks, &nbins, &ncounts, rnames); //allocate storage Rcpp::List mlist(nmarks); for (int mark = 0; mark < nmarks; ++mark){ mlist[mark] = Rcpp::IntegerMatrix(nbins, ncounts); } if (rnames.size() > 0) mlist.attr("names") = rnames; //copy data #pragma omp parallel for num_threads(nthreads) collapse(2) for (int c = 0; c < ncounts; ++c){ for (int mark = 0; mark < nmarks; ++mark){ MatRow<int> row = Mat<int>((SEXP)clist[c]).getRow(mark); Vec<int> col = Mat<int>((SEXP)mlist[mark]).getCol(c); for (int bin = 0; bin < nbins; ++bin){ col[bin] = row[bin]; } } } return mlist; }
TEST_F(SHAPE, Moves) { std::vector<ade::DimT> junk = {8, 51, 73}; std::vector<ade::DimT> slist = {24, 11, 12, 16}; ade::Shape mvassign; ade::Shape mvassign2(junk); ade::Shape orig(slist); ade::Shape mv(std::move(orig)); std::vector<ade::DimT> mlist(mv.begin(), mv.end()); EXPECT_ARREQ(slist, mlist); for (uint8_t i = 0; i < ade::rank_cap; ++i) { EXPECT_EQ(1, orig.at(i)); } mvassign = std::move(mv); std::vector<ade::DimT> alist(mvassign.begin(), mvassign.end()); EXPECT_ARREQ(slist, alist); for (uint8_t i = 0; i < ade::rank_cap; ++i) { EXPECT_EQ(1, mv.at(i)); } mvassign2 = std::move(mvassign); std::vector<ade::DimT> alist2(mvassign2.begin(), mvassign2.end()); EXPECT_ARREQ(slist, alist2); for (uint8_t i = 0; i < ade::rank_cap; ++i) { EXPECT_EQ(1, mvassign.at(i)); } }
int main (void) { if (argv["*"].count() < 2) { usage (); return 1; } string listid = argv["*"][0]; string listowner = argv["*"][1]; string name; string subjecttag; bool moderatedsubs = false; bool moderatedposts = false; if (argv.exists ("--name")) { name = argv["--name"]; } else { name = listid.copyuntil ('@'); } if (argv.exists ("--subjecttag")) { subjecttag = argv["--subjecttag"]; } else { subjecttag = name; } if (argv.exists ("--moderate-subscriptions")) { moderatedsubs = true; } if (argv.exists ("--moderate-posts")) { moderatedposts = true; } limadb mydb (PATH_LIMADB); if (mydb.listexists (listid)) { ferr.printf ("List already exists\n"); return 1; } if (! mydb.createlist (listid, listowner, moderatedposts, moderatedsubs, name, subjecttag)) { return 1; } mailinglist mlist (mydb, listid); listmember &m = mlist.createmember (listowner); m.approved (true); m.moderator (true); return 0; }