int is_var_in_memory(char *variable_name) { /** we have a default structure defined in the list_structure_toolkit, * lets search it for variable_name **/ return node_exists( &loaded_variable_listPtr, variable_name); }
END_TEST START_TEST(node_exists_check) { pbsnode node1; pbsnode node2; node1.change_name("bob"); node2.change_name("tom"); initialize_allnodes(&allnodes, &node1, &node2); fail_unless(node_exists("bob") == true); fail_unless(node_exists("tom") == true); fail_unless(node_exists("joe") == false); }
/** Make sure each node in the edges exists. */ void NavGraph::assert_valid_edges() { for (size_t i = 0; i < edges_.size(); ++i) { if (! node_exists(edges_[i].from())) { throw Exception("Node '%s' for edge '%s' -> '%s' does not exist", edges_[i].from().c_str(), edges_[i].from().c_str(), edges_[i].to().c_str()); } if (! node_exists(edges_[i].to())) { throw Exception("Node '%s' for edge '%s' -> '%s' does not exist", edges_[i].to().c_str(), edges_[i].from().c_str(), edges_[i].to().c_str()); } } }
/** Add a node. * @param node node to add * @throw Exception thrown if node with the same name as @p node already exists */ void NavGraph::add_node(const NavGraphNode &node) { if (node_exists(node)) { throw Exception("Node with name %s already exists", node.name().c_str()); } else { nodes_.push_back(node); apply_default_properties(nodes_.back()); reachability_calced_ = false; notify_of_change(); } }
/** Connect node to closest edge * @param n node to connect to closest node */ void NavGraph::connect_node_to_closest_edge(const NavGraphNode &n) { NavGraphEdge closest = closest_edge(n.x(), n.y()); cart_coord_2d_t p = closest.closest_point_on_edge(n.x(), n.y()); NavGraphNode closest_conn = closest_node(p.x, p.y); NavGraphNode cn; if (almost_equal(closest_conn.distance(p.x, p.y), 0.f, 2)) { cn = closest_conn; } else { cn = NavGraphNode(NavGraph::format_name("C-%s", n.name().c_str()), p.x, p.y); } if (closest.from() == cn.name() || closest.to() == cn.name()) { // we actually want to connect to one of the end nodes of the edge, // simply add the new edge and we are done NavGraphEdge new_edge(cn.name(), n.name()); new_edge.set_property("generated", true); new_edge.set_property("created-for", cn.name() + "--" + n.name()); add_edge(new_edge); } else { // we are inserting a new point into the edge remove_edge(closest); NavGraphEdge new_edge_1(closest.from(), cn.name()); NavGraphEdge new_edge_2(closest.to(), cn.name()); NavGraphEdge new_edge_3(cn.name(), n.name()); new_edge_1.set_properties(closest.properties()); new_edge_2.set_properties(closest.properties()); new_edge_3.set_property("created-for", cn.name() + "--" + n.name()); new_edge_3.set_property("generated", true); if (! node_exists(cn)) add_node(cn); add_edge(new_edge_1); add_edge(new_edge_2); add_edge(new_edge_3); } }