- /* Bring the smaller entry to src. */
- if(src > tgt) {
- edge->src = tgt;
- edge->tgt = src;
- } else {
- edge->src = src;
- edge->tgt = tgt;
- }
-
- return edge;
-}
-
-static INLINE void add_if(const be_chordal_env_t *env, int src, int tgt)
-{
- if_edge_t edge;
- if_node_t node, *src_node, *tgt_node;
- /* insert edge */
- edge_init(&edge, src, tgt);
- set_insert(env->edges, &edge, sizeof(edge), IF_EDGE_HASH(&edge));
-
- /* insert nodes */
- node.nnr = src;
- node.neighb = pset_new_ptr(8);
- src_node = set_insert(env->nodes, &node, sizeof(node), IF_NODE_HASH(&node));
- node.nnr = tgt;
- node.neighb = pset_new_ptr(8);
- tgt_node = set_insert(env->nodes, &node, sizeof(node), IF_NODE_HASH(&node));
-
- /* insert neighbors into nodes */
- pset_insert_ptr(src_node->neighb, tgt_node);
- pset_insert_ptr(tgt_node->neighb, src_node);
-}
-
-static INLINE int are_connected(const be_chordal_env_t *env, int src, int tgt)
-{
- if_edge_t edge;
- edge_init(&edge, src, tgt);
- return set_find(env->edges, &edge, sizeof(edge), IF_EDGE_HASH(&edge)) != NULL;
-}
-
-int ifg_has_edge(const be_chordal_env_t *env, const if_node_t *n1, const if_node_t* n2) {
- return are_connected(env, n1->nnr, n2->nnr);