id summary reporter owner description type status milestone component version severity resolution keywords cc 4843 GraphML parser broken Alexandre Romana Andrew Sutton "Hi, First of all, thanks for the library, it's awesome. However, latest versions are not able to correctly parse graphML files. The GraphML standard states the following for the edge attributes: * id (optional) * directed (optional) * source (required) * target (required) * sourceport (optional) * targetport (optional) In trunk/libs/graph/src/graphml.cpp@63244: {{{ #!div style=""font-size: 80%"" We have: {{{#!C++ 90 BOOST_FOREACH(const ptree* gr, graphs) { 91 bool default_directed = gr->get(path(""/edgedefault"")) == ""directed""; 92 // Search for edges 93 BOOST_FOREACH(const ptree::value_type& edge, *gr) { 94 if (edge.first != ""edge"") continue; 95 std::string id = edge.second.get(path(""/id"")); 96 std::string source = edge.second.get(path(""/source"")); 97 std::string target = edge.second.get(path(""/target"")); 98 std::string local_directed = edge.second.get(path(""/directed""), """"); 99 bool is_directed = (local_directed == """" ? default_directed : local_directed == ""true""); 100 if (is_directed != m_g.is_directed()) { 101 if (is_directed) { 102 BOOST_THROW_EXCEPTION(directed_graph_error()); 103 } else { 104 BOOST_THROW_EXCEPTION(undirected_graph_error()); 105 } 106 } }}} }}} {{{ #!div style=""font-size: 80%"" Should be (look at line 95): {{{#!C++ 90 BOOST_FOREACH(const ptree* gr, graphs) { 91 bool default_directed = gr->get(path(""/edgedefault"")) == ""directed""; 92 // Search for edges 93 BOOST_FOREACH(const ptree::value_type& edge, *gr) { 94 if (edge.first != ""edge"") continue; 95 std::string id = edge.second.get(path(""/id""), """"); 96 std::string source = edge.second.get(path(""/source"")); 97 std::string target = edge.second.get(path(""/target"")); 98 std::string local_directed = edge.second.get(path(""/directed""), """"); 99 bool is_directed = (local_directed == """" ? default_directed : local_directed == ""true""); 100 if (is_directed != m_g.is_directed()) { 101 if (is_directed) { 102 BOOST_THROW_EXCEPTION(directed_graph_error()); 103 } else { 104 BOOST_THROW_EXCEPTION(undirected_graph_error()); 105 } 106 } }}} }}} " Bugs closed To Be Determined graph Boost 1.44.0 Problem fixed GraphML