예제 #1
0
void CSimulator::_configureStructure ( XMLElement* elem ){
	string elemName, attr;
	
	/* Create lines */
	attr       = elem->Attribute("lines");
	int nLines = atoi( attr.c_str() );
	for ( int i = 0 ; i < nLines ; i++ ){		
		CLine* tmp_line = new CLine ( &m_sSimCnf );
		for( XMLElement* line = elem->FirstChildElement() ; line != NULL ; line = line->NextSiblingElement() ){
			elemName = line->Value();
			stringstream tmp_name;
			tmp_name << "line_";
			tmp_name << (i+1);
			if ( elemName == tmp_name.str() ){
				/* Create Nodes */
				attr         = line->Attribute("nodes");
				int nNodes   = atoi( attr.c_str() );
				string sType = line->Attribute("type");
				for( XMLElement* node = elem->FirstChildElement() ; node != NULL ; node = node->NextSiblingElement() ){
					elemName = node->Value();
					if ( elemName == sType ){
						for ( int j = 0 ; j < nNodes ; j++ ){	
							tmp_line->addNode    ( _createNode ( node , tmp_line->getPVNrGen() , tmp_line->getPVNrFrc() ) );	
						}
					}
				}				
			}
		}
		m_pcGrid->addLine ( tmp_line );
	}
	return;
};
예제 #2
0
node *_nodeAddBST(node *current, TYPE val)
{
	if (current == 0)
	{
		return _createNode(val);
	}

	if (val < current->value)
	{
		current->left = _nodeAddBST(current->left, val);
	} else if (val > current->value)
	{
		current->right = _nodeAddBST(current->right, val);
	}

	return current;
}
예제 #3
0
shared_ptr<Way> GeometryConverter::convertLineStringToWay(const LineString* ls,
  const shared_ptr<OsmMap>& map, Status s, double circularError)
{
  shared_ptr<Way> way;
  if (ls->getNumPoints() > 0)
  {
    Coordinate c = ls->getCoordinateN(0);
    way.reset(new Way(s, map->createNextWayId(), circularError));

    for (size_t i = 0; i < ls->getNumPoints(); i++)
    {
      c = ls->getCoordinateN(i);
      way->addNode(_createNode(map, c, s, circularError)->getId());
    }
    map->addWay(way);
  }

  return way;
}
예제 #4
0
NodePtr GeometryConverter::convertPointToNode(const geos::geom::Point* point, const OsmMapPtr& map,
                                              Status s, double circularError)
{
  return _createNode(map, Coordinate(point->getX(), point->getY()), s, circularError);
}
void _testTree()
{
  // create 3 lvls for the initial tree
  //first lvl, max's turn, initial state of board
  _createNode(0,board); //create initial node for test_tree_head, current state = head at this point
  
  //second lvl, min's turn, 4 states
  //(top left corner, (4,4), (5,5), bottom right corner)
  char new_state[BOARD_SIZE][BOARD_SIZE];
  
  /*NOTE: x - 1, and y - 1 as array range from 0 -7, not 1 - 8 */

  /* top left corner */
  _createState(0,0,new_state,current_state->state);
  _createNode(0,new_state);
  /* (4,4) */
  _createState(3,3,new_state,current_state->state);
  _createNode(0,new_state);
  /* (5,5) */
  _createState(4,4,new_state,current_state->state);
  _createNode(0,new_state);
  /* bottom right corner */
  _createState(7,7,new_state,current_state->state);
  _createNode(0,new_state);
  
  /*third lvl, middle states have 4 children each, corners have 2 */
  /*NOTE: current state should point to child_head of top left corner node */
  current_state = current_state->child_head; //reset current state to firsts lvl's child_head
  
  /*NOTE: x - 1, and y - 1 as array range from 0 -7, not 1 - 8 */

  /* top left corner children = (1,2), (2,1) */
  _createState(0,1,new_state,current_state->state);
  _playerMove(0,0,0,1,new_state); //zero all slots between moves
  _createNode(0,new_state);
  _createState(1,0,new_state,current_state->state);
  _playerMove(0,0,1,0,new_state); //zero all slots between moves
  _createNode(0,new_state);

  /* (4,4) = (3,4), (4,3), (5,4), (4,5)*/
  _createState(2,3,new_state,current_state->next->state); //skip to next as current_state not reset
  _playerMove(3,3,2,3,new_state); //zero all slots between moves
  _createNode(1, new_state);  //reset current_state to next parent
  _createState(3,2,new_state,current_state->state);
  _playerMove(3,3,3,2,new_state); //zero all slots between moves
  _createNode(0,new_state);
  _createState(4,3,new_state,current_state->state);
  _playerMove(3,3,4,3,new_state); //zero all slots between moves
  _createNode(0,new_state);
  _createState(3,4,new_state,current_state->state);
  _playerMove(3,3,3,4,new_state); //zero all slots between moves
  _createNode(0,new_state);

  /* (5,5) = (4,5), (5,4), (5,6), (6,5) */
  _createState(3,4,new_state,current_state->next->state); //skip to next as current_state not reset
  _playerMove(4,4,3,4,new_state); //zero all slots between moves
  _createNode(1, new_state); //reset current-state to next parent
  _createState(4,3,new_state,current_state->state);
  _playerMove(4,4,4,3,new_state); //zero all slots between moves
  _createNode(0,new_state);
  _createState(4,5,new_state,current_state->state);
  _playerMove(4,4,4,5,new_state); //zero all slots between moves
  _createNode(0,new_state);
  _createState(5,4,new_state,current_state->state);
  _playerMove(4,4,5,4,new_state); //zero all slots between moves
  _createNode(0,new_state);

  /* bottom right corner = (8,7), (7,8) */
  _createState(7,6,new_state,current_state->next->state); //skip to next as current_state not reset
  _playerMove(7,7,7,6,new_state); //zero all slots between moves
  _createNode(1, new_state); //reset current-state to next parent
  _createState(6,7,new_state,current_state->state);
  _playerMove(7,7,6,7,new_state); //zero all slots between moves
  _createNode(0,new_state);

  // print tree and clean up memory
  _printTesttree(test_tree_head);
  _cleanTesttree(test_tree_head);

}