In C++17 mode, libc++'s `std::shuffle` isn't compatible with Boost's random
generators because the `min` and `max` functions aren't `constexpr`, so use
`std::mt19937` instead. This might not be required if boostorg/random#24 is
accepted.
csr_out_edge_iterator and csr_in_edge_iterator are part of the
boost::detail namespace, so they need to explicitly qualify
iterator_core_access in their friend declarations. Note that
csr_edge_iterator already gets this correct.
Works fine with c++11, thanks!
System: (K)Ubuntu 16.04 LTS
Compiler: g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Try to 'g++ -c' the four SGB examples girth.cpp, miles_span.cpp,
roget_components.cpp, and topo-sort-with-sgb.cpp.
(1) SGB 2002-01-30 changed the 'Associated Press scores' from 'ap0' and
'ap1' to 'ap'. This preprocessor macro (sic!) collides with numerous
function parameters in 'named_function_params.hpp'. '#undef'ining the
macro doesn't break the BGL examples.
(2) girth.cpp fails because of a missing 'null_vertex()' function.
(3) roget_components.cpp invokes 'strncmp()' from the C library.
(4) topo-sort-with-sgb.cpp hickups because of a missing 'vertices()'
function. Following roget_components.cpp and putting the collective
SGB header up front fixes this.
* Add travis-ci as CI for boostorg/graph repo.
I thought it would be a great idea to have the test running from a
"neutral entity" instead of having to checkout the pull request and
cd libs/graph/test && ../../../b2
I saw that many other boostorg submodules had their own CI system:
- compute relies on travis-ci
- geometry uses circleci
The major difference between circleci and travis-ci is the multi-threading supported by circleci. Both are free for open-source project (as of 2016/04/26). I chose travis-ci because I know how to configure it.
As for geometry, we could also use coveralls.io to display the test covering reports and improve the quality/coverage of tests on boostorg/graph.
IMPORTANT: a member of boostorg will have to add the repo boostorg/graph into travis-ci for it to work.
* csr_graph_test won't pass unless -std=c++11 is enabled
* Fixed gcc too old (4.6.3) using instead gcc-4.8 for -std=c++11
So we can at least make the examples use a more consistent code style.
Run clang-format like so:
$ clang-format -i *.cpp
and use git diff to see what has changed.
This will strip trailing whitespace too. You can ignore that by
using git diff -w
* examples: Sort the examples in the Jamfile.
This makes it easier to see which example files are even
mentioned in the build.
* examples: Build all examples.
To at least test that they build with the current API.
The newly-mentioned files here seem to be mostly (maybe all) the
BGL book examples that were added in 2001:
5215e9b4f2
I would prefer to put these all in an examples/bgl_book subdirectory.
* Examples build: Comment out examples that cannot be expected to build.
For instance, because they depend on SBG or Stanford Graph.
* Examples: Add missing <iostream> includes.
* Examples: Comment out unused typedefs and variables.
* Examples: king_ordering: Adapt to newer API.
Specify the extra parameter for king_ordering().
The API was changed in 2005:
4bc19a1621
The test code was already correct:
https://github.com/imvu/boost/blob/master/libs/graph/test/king_ordering.cpp
* Examples: Some graphviz examples: Link to the library.
read_graphviz() is not header only.
* csr-example: Pass edge_are_sorted to constructor.
To use the new (well, in 2009) API:
809904f268
* iteration_macros: Use BGL_FORALL_ADJ.
Not BGL_FORALL_ADJACENT(), which doesn't exist, because this was
changed in 2001:
a0061ba07e
* examples: kevin-bacon2: Fix the build.
Include boost/serialization/string.hpp to fix this error:
kevin-bacon2.cpp:68:9: required from here
../../../boost/serialization/access.hpp:116:9: error: ‘class std::__cxx11::basic_string<char>’ has no member named ‘serialize’
and link to the boost serialization library.
* examples: loop_dfs: Add a missing typename keyword.
* examples: accum-compile-times: Remove unused variables.
* Examples: Remove unused typedefs.
* examples: avoid warning about parentheses aronud &&.
* example: read_graphviz: Actually use status.
* Example: adj_list_ra_edgelist: Fix the build.
The [] syntax must have worked once but doesn't anymore.
This fixes the build but it is even more clearl now a stupid way to use
the edge iterator.
* Examples: Remove unused typedefs.
* Examples: Remove an unused variable.
* Example: iohb: A const correction.
Otherwise newer compilers complain about converting string literals
to char* when callig this function.
* Exmaples: iohb: Avoid security warning with fprintf().
* Examples: Actually use a variable.
* Examples: Comment out all Graphviz examples.
These use the now-non-existant GraphizGraph and GraphvizDigraph
types. Presumably these could be updated but it's not obvious how
to do that:
https://svn.boost.org/trac/boost/ticket/4762
So people can see what the project even is when they reach the GitHub repository.
Also, even the documentation doesn't have an actual short description of what
BGL is.
And, without a direct link, it is very hard to find the list of open issues
on Boost's trac system.
With many improvements from Maël Valais:
https://github.com/murraycu/graph/pull/1