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);
}
Exemple #2
0
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);
  }
Exemple #3
0
/** 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());
    }
  }
}
Exemple #4
0
/** 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();
  }
}
Exemple #5
0
/** 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);
  }
}