[Graph] Some help in trying to fix the broken leda wrapper

Hi, This is a repost and I hope this time it gets someone attention. I have spend some time trying to make the leda wrapper work with the new version of leda. I had some success with it. However finally i got stuck with this error that I couldn't make any sense of boost_1_36_0/boost/concept_
check.hpp:91: error: request for member 'error_type_must_be_a_signed_integer_type' in '((boost::SignedInteger<leda::edge_struct* const*>*)this)->boost::SignedInteger<leda::edge_struct* const*>::x', which is of non-class type 'leda::edge_struct* const*'
It is instantiated from eventually from boost/concept_check.hpp: In destructor 'boost::SignedInteger<T>::~SignedInteger() [with T = leda::edge_struct* const*]': /home/san/ArtOfLearning/boost_1_36_0/boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed() [with Model = boost::SignedInteger<leda::edge_struct* const*>]' It doesn't seems like a big problem. I am sure the original author of leda wrapper or anybody well versed with the internals can point me in the right direction. Thanks sandeep On Mon, Nov 3, 2008 at 10:41 PM, Sandeep Gupta <gupta.sandeep@gmail.com>wrote:
Hi, Not sure how much interest is in leda wrapper of BGL. But the new version of leda broke the leda wrapper. I have made some quick fixes. However i got stuck at this error:
boost_1_36_0/boost/concept_check.hpp:91: error: request for member 'error_type_must_be_a_signed_integer_type' in '((boost::SignedInteger<leda::edge_struct* const*>*)this)->boost::SignedInteger<leda::edge_struct* const*>::x', which is of non-class type 'leda::edge_struct* const*'
Hopefully its the last one. After this technically the wrapper should compile. I have briefly tested it with connecte components routines. If there is interest i will happy to post the changes..
thanks sandeep

on Wed Nov 05 2008, "Sandeep Gupta" <gupta.sandeep-AT-gmail.com> wrote:
Hi, This is a repost and I hope this time it gets someone attention. I have spend some time trying to make the leda wrapper work with the new version of leda. I had some success with it. However finally i got stuck with this error that I couldn't make any sense of
boost_1_36_0/boost/concept_
check.hpp:91: error: request for member 'error_type_must_be_a_signed_integer_type' in '((boost::SignedInteger<leda::edge_struct* const*>*)this)->boost::SignedInteger<leda::edge_struct* const*>::x', which is of non-class type 'leda::edge_struct* const*'
It is instantiated from eventually from boost/concept_check.hpp: In destructor 'boost::SignedInteger<T>::~SignedInteger() [with T = leda::edge_struct* const*]': /home/san/ArtOfLearning/boost_1_36_0/boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed() [with Model = boost::SignedInteger<leda::edge_struct* const*>]'
That's a concept check. Without seeing the complete instantiation backtrace, it's hard to tell much about what's causing it other than that the code is getting "leda::edge_struct* const*" where it was expecting a signed integer type. -- Dave Abrahams BoostPro Computing http://www.boostpro.com

Hi Dave, Thanks so much for looking into. Attached below is the error report trimmed to what i felt is relevant. Let me the full trace is required. Thanks sandeep /boost/concept_check.hpp: In destructor 'boost::SignedInteger<T>::~SignedInteger() /boost/concept/detail/general.hpp:30: instantiated from 'static void boost::concept::requirement<Model>::failed() /boost/concept_check.hpp:458: instantiated from 'boost::InputIterator<TT>::~InputIterator() /boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed() /boost/graph/graph_concepts.hpp:47: instantiated from 'boost::concepts::MultiPassInputIterator<T>::~MultiPassInputIterator() /boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed() /boost/graph/graph_concepts.hpp:81: instantiated from 'boost::concepts::IncidenceGraph<G>::~IncidenceGraph() /boost/graph/graph_concepts.hpp:70: instantiated from 'static void boost::concept::requirement<Model>::failed() /boost/concept_check.hpp:43: instantiated from 'void boost::function_requires(Model*) /boost/graph/breadth_first_search.hpp:55: instantiated from 'void boost::breadth_first_visit(const IncidenceGraph&, typename boost::graph_traits<G>::vertex_descriptor, Buffer&, BFSVisitor, ColorMap) /boost/graph/dijkstra_shortest_paths.hpp:207: instantiated from 'void boost::dijkstra_shortest_paths_no_init(const VertexListGraph&, typename boost::graph_traits<G>::vertex_descriptor, PredecessorMap, DistanceMap, WeightMap, IndexMap, Compare, Combine, DistZero, DijkstraVisitor, ColorMap) /boost/graph/dijkstra_shortest_paths.hpp:257: instantiated from 'void boost::dijkstra_shortest_paths(const VertexListGraph&, typename boost::graph_traits<G>::vertex_descriptor, PredecessorMap, DistanceMap, WeightMap, IndexMap, Compare, Combine, DistInf, DistZero, DijkstraVisitor, ColorMap) /boost/graph/dijkstra_shortest_paths.hpp:278: instantiated from 'void boost::detail::dijkstra_dispatch2(const VertexListGraph&, typename boost::graph_traits<G>::vertex_descriptor, DistanceMap, WeightMap, IndexMap, const Params&, ColorMap) /boost/graph/dijkstra_shortest_paths.hpp:315: instantiated from 'void boost::detail::dijkstra_dispatch1(const VertexListGraph&, typename boost::graph_traits<G>::vertex_descriptor, DistanceMap, WeightMap, IndexMap, const Params&, ColorMap) /boost/graph/dijkstra_shortest_paths.hpp:336: instantiated from 'void boost::dijkstra_shortest_paths(const VertexListGraph&, typename boost::graph_traits<G>::vertex_descriptor, const boost::bgl_named_params<P, T, R>&) explore.cpp:51: instantiated from here /boost/concept_check.hpp:91: error: request for member 'error_type_must_be_a_signed_integer_type' in '((boost::SignedInteger<leda::edge_struct* const*>*)this)->boost::SignedInteger<leda::edge_struct* const*>::x', which is of non-class type 'leda::edge_struct* const*' ../tools/ledalib/incl/LEDA/internal/sys/unix.h: At global scope: ../tools/ledalib/incl/LEDA/internal/sys/unix.h:108: warning: 'set_double_ieee_for_linux' defined but not used On Mon, Nov 10, 2008 at 9:44 PM, David Abrahams <dave@boostpro.com> wrote:
on Wed Nov 05 2008, "Sandeep Gupta" <gupta.sandeep-AT-gmail.com> wrote:
Hi, This is a repost and I hope this time it gets someone attention. I have spend some time trying to make the leda wrapper work with the new version of leda. I had some success with it. However finally i got stuck with this error that I couldn't make any sense of
boost_1_36_0/boost/concept_
check.hpp:91: error: request for member 'error_type_must_be_a_signed_integer_type' in '((boost::SignedInteger<leda::edge_struct* const*>*)this)->boost::SignedInteger<leda::edge_struct* const*>::x',
which
is of non-class type 'leda::edge_struct* const*'
It is instantiated from eventually from boost/concept_check.hpp: In destructor 'boost::SignedInteger<T>::~SignedInteger() [with T = leda::edge_struct* const*]': /home/san/ArtOfLearning/boost_1_36_0/boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed() [with Model = boost::SignedInteger<leda::edge_struct* const*>]'
That's a concept check. Without seeing the complete instantiation backtrace, it's hard to tell much about what's causing it other than that the code is getting "leda::edge_struct* const*" where it was expecting a signed integer type.
-- Dave Abrahams BoostPro Computing http://www.boostpro.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

/boost/concept_check.hpp:91: error: request for member 'error_type_must_be_a_signed_integer_type' in '((boost::SignedInteger<leda::edge_struct* const*>*)this)->boost::SignedInteger<leda::edge_struct* const*>::x', which is of non-class type 'leda::edge_struct* const*'
../tools/ledalib/incl/LEDA/internal/sys/unix.h: At global scope:
../tools/ledalib/incl/LEDA/internal/sys/unix.h:108: warning: 'set_double_ieee_for_linux' defined but not used
I'd have to look at the LEDA code to get a better idea of why it's no longer compatible with the BGL wrapper. My best guess is that the wrapper no longer correctly maps between LEDA's edge implementation and edge descriptors. Fixing this would probably require a completely new wrapper implementation, and unfortunately, LEDA compatibility support isn't high on my list of priorities right now. You're more than welcom to take a stab at it. I don't think it should pose any serious problems. Andrew Sutton andrew.n.sutton@gmail.com

on Wed Nov 12 2008, "Sandeep Gupta" <gupta.sandeep-AT-gmail.com> wrote:
Hi Dave, Thanks so much for looking into. Attached below is the error report trimmed to what i felt is relevant. Let me the full trace is required.
Thanks sandeep
/boost/concept_check.hpp: In destructor 'boost::SignedInteger<T>::~SignedInteger()
/boost/concept/detail/general.hpp:30: instantiated from 'static void boost::concept::requirement<Model>::failed()
/boost/concept_check.hpp:458: instantiated from 'boost::InputIterator<TT>::~InputIterator()
/boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed()
/boost/graph/graph_concepts.hpp:47: instantiated from 'boost::concepts::MultiPassInputIterator<T>::~MultiPassInputIterator()
/boost/concept/detail/general.hpp:29: instantiated from 'static void boost::concept::requirement<Model>::failed()
/boost/graph/graph_concepts.hpp:81: instantiated from 'boost::concepts::IncidenceGraph<G>::~IncidenceGraph()
/boost/graph/graph_concepts.hpp:70: instantiated from 'static void boost::concept::requirement<Model>::failed()
/boost/concept_check.hpp:43: instantiated from 'void boost::function_requires(Model*)
/boost/graph/breadth_first_search.hpp:55: instantiated from 'void boost::breadth_first_visit(const IncidenceGraph&, typename boost::graph_traits<G>::vertex_descriptor, Buffer&, BFSVisitor, ColorMap)
This says that: * The graph wrapper fails to model IncidenceGraph * Because its out_edge_iterator fails to model MultipassInputIterator * Because its out_edge_iterator fails to model InputIterator, of which MultipassInputIterator is a refinement * Because the out_edge_iterator's difference_type fails to model SignedInteger. So there's your problem: the out_edge_iterator's difference_type is not turning out to be a signed integer. That shouldn't be too hard to fix. This is actually pretty easy to work out from looking at the errors and the lines in the source. I recommend you try it. Concept checking rocks! -- Dave Abrahams BoostPro Computing http://www.boostpro.com
participants (3)
-
Andrew Sutton
-
David Abrahams
-
Sandeep Gupta