$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: David Abrahams (dave_at_[hidden])
Date: 2006-02-06 08:36:52
Dmitry Bufistov <dmitry_at_[hidden]> writes:
> Hi,
> A huge disappointment again came to me today. I used  
> boost::adjacency<boost::directedS> class for representation of simple 
> Petri net. I was trying to define the following function
> //////////////////////////////////////////
> bool    if_enabled(transition_descriptor_t    tr, graph_t net) {
>                 assert((net[tr].m_node_type == TRANSITION) && 
> "if_enabled called with non transition node");
>
>                 BGL_FORALL_INEDGES_T(tr, ed, net, graph_t)
>                 {
>                     if (net[boost::source(ed, net)].m_tokens_number < 
> net[ed].m_weight) return false;
>                 }
>                 return true;
>             }
>
> //////////////////////////////////////////////////////////
> But I failed because of lack of boost::in_edges() function  
> specialization for type that I've  chosen.
> Am I doing something wrong?
> Any ideas how to implement my function in resonable way would be greatly 
> appreciated.
> Note: all works fine with  "adjacency_list<vecS, vecS, bidirecrionalS>"
By /definition/, BidirectionalGraph is a graph where you can enumerate
the incoming edges for any node.  Unless you specify bidirectionalS,
an adjacency list won't be a BidirectionalGraph, and you can't use
in_edges.  So everything is working just as I would expect it to.
-- Dave Abrahams Boost Consulting www.boost-consulting.com