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; };
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; }
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; }
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); }