int hpx_main(int argc, char** argv_init)
{
    hpx::new_<test_server>(hpx::find_here(), moveonly()).get();
    HPX_TEST_EQ(constructed_from_moveonly.load(), 1);

    moveable o;
    hpx::new_<test_server>(hpx::find_here(), o).get();
    HPX_TEST_EQ(constructed_from_moveable.load(), 1);

    hpx::new_<test_server>(hpx::find_here(), moveable()).get();
    HPX_TEST_EQ(constructed_from_moveable.load(), 2);

    return hpx::finalize();
}
void flood(int x, int y, int flooded[200][200])
{
    int front=1,rear=0;
    flooded[x][y]=0;
    memset(visited, false, sizeof(visited));
    queueX[0]=x, queueY[0]=y, visited[x][y]=true;
    while(rear<front)
    {
        if(!(move[queueX[rear]][queueY[rear]]&1))
        {
            if(moveable(queueX[rear],queueY[rear]-1))
            {
                queueX[front]=queueX[rear];
                queueY[front]=queueY[rear]-1;
                if(!visited[queueX[front]][queueY[front]])
                {
                    visited[queueX[front]][queueY[front]]=true;
                    flooded[queueX[front]][queueY[front]]=flooded[queueX[rear]][queueY[rear]]+1;
                    front++;
                }
            }
        }
        if(!(move[queueX[rear]][queueY[rear]]&2))
        {
            if(moveable(queueX[rear]-1,queueY[rear]))
            {
                queueX[front]=queueX[rear]-1;
                queueY[front]=queueY[rear];
                if(!visited[queueX[front]][queueY[front]])
                {
                    visited[queueX[front]][queueY[front]]=true;
                    flooded[queueX[front]][queueY[front]]=flooded[queueX[rear]][queueY[rear]]+1;
                    front++;
                }
            }
        }
        if(!(move[queueX[rear]][queueY[rear]]&4))
        {
            if(moveable(queueX[rear],queueY[rear]+1))
            {
                queueX[front]=queueX[rear];
                queueY[front]=queueY[rear]+1;
                if(!visited[queueX[front]][queueY[front]])
                {
                    visited[queueX[front]][queueY[front]]=true;
                    flooded[queueX[front]][queueY[front]]=flooded[queueX[rear]][queueY[rear]]+1;
                    front++;
                }
            }
        }
        if(!(move[queueX[rear]][queueY[rear]]&8))
        {
            if(moveable(queueX[rear]+1,queueY[rear]))
            {
                queueX[front]=queueX[rear]+1;
                queueY[front]=queueY[rear];
                if(!visited[queueX[front]][queueY[front]])
                {
                    visited[queueX[front]][queueY[front]]=true;
                    flooded[queueX[front]][queueY[front]]=flooded[queueX[rear]][queueY[rear]]+1;
                    front++;
                }
            }
        }
        rear++;
    }
}
Example #3
0
		void
		status_machine_imp::self_moveable(int status)
		{
			moveable(status,status);
		}
Example #4
0
		void 
		status_machine_imp::bidirec_moveable(int first ,int second)
		{
			moveable(first,second);
			moveable(second,first);
		}