Пример #1
0
// [[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;
}
Пример #2
0
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));
	}
}
Пример #3
0
	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;
	}