1. 11 Apr, 2016 1 commit
  2. 22 Jan, 2016 1 commit
  3. 01 Jan, 2016 1 commit
  4. 11 Oct, 2015 1 commit
  5. 03 Oct, 2015 1 commit
  6. 17 Sep, 2015 1 commit
  7. 08 Jan, 2015 1 commit
  8. 28 Jul, 2014 1 commit
  9. 01 Jul, 2014 1 commit
  10. 29 Jun, 2014 1 commit
  11. 29 May, 2014 1 commit
  12. 19 Apr, 2014 1 commit
  13. 02 Jan, 2014 1 commit
  14. 06 Sep, 2013 1 commit
  15. 25 May, 2013 1 commit
  16. 06 Jan, 2013 1 commit
  17. 06 Dec, 2012 1 commit
    • Tiago Peixoto's avatar
      Refactor UndirectedAdaptor edge iterators · 7bf34e3f
      Tiago Peixoto authored
      The edge and adjacency iterators of UndirectedAdaptor are now
      implemented using Boost.Iterators and Boost.Range. Among other things,
      this preserves underlying properties of the original iterators, such as
      random access.
      7bf34e3f
  18. 27 Oct, 2012 2 commits
  19. 02 May, 2012 1 commit
  20. 28 Apr, 2011 1 commit
    • Tiago Peixoto's avatar
      Remove some boost workaround files · 649b6c9a
      Tiago Peixoto authored
      This removes reverse_graph.hpp, reverse_graph.hpp and copy.hpp, and
      introduces some modifications in graph_adaptor.hh. This modification
      fixes compilation problems across different boost versions.
      649b6c9a
  21. 10 Feb, 2011 1 commit
  22. 15 Dec, 2010 1 commit
  23. 13 Nov, 2010 1 commit
  24. 03 May, 2010 1 commit
  25. 07 Mar, 2010 1 commit
  26. 10 Feb, 2008 1 commit
    • Tiago Peixoto's avatar
      Refactor metaprogramming engine · 0b66e272
      Tiago Peixoto authored
      This is a huge commit which completely refactors the metaprogramming
      engine which generates and selects (at run time) the graph view type and
      the desired algorithm implementation (template instantiation) that runs
      on it.
      
      Things are laid out now as following. There exists a main underlying
      graph type (GraphInterface::multigraph_t) and several other template
      classes that mask it some way or another, in a hierarchic fashion:
      
           multigraph_t -> filtered_graph (edges only, vertices only, both)
               |                               |           |           |
               |                               |           |           |
               |-------(reversed_graph)--------|-----------|-----------|
               |                               |           |           |
               \------(UndirectedAdaptor)------------------------------/
      
      The filtered_graph filters out edges and/or vertices from the graph
      based on some scalar boolean property. The reversed_graph reversed the
      direction of the edges and, finally, the UndirectedAdaptor treats the
      original directed graphs as undirected, transversing the in- and
      out-edges of each vertex indifferently. Thus, the total number of graph
      view types is 12. (The option --disable-graph-filtering can be passed to
      the configure script, which will disable graph filtering altogether and
      bring the total number down to 3, to reduce compile time and memory
      usage)
      
      In general, some specific algorithm, implemented as a template function
      object, needs to be instantiated for each of those types. Furthermore,
      the algorithm may also depend on other types, such as specific
      property_maps. Thus, the following scheme is used:
      
          struct my_algorithm // algorithm to be implemented
          {
              template <class Graph, class PropertyMap>
              void operator()(Graph *g, PropertyMap p, double& result) const
              {
                  // ...
              }
          };
      
          // in order for the above code to be instantiated at compile time
          // and selected at run time, the run_action template function object
          // is used from a member function of the GraphInterface class:
      
          double GraphInterface::MyAlgorithm(string prop_name)
          {
              double result;
              boost::any vprop = prop(property, _vertex_index, _properties);
              run_action<>()(*this, bind<void>(my_algorithm(), _1, _2,
                                               var(result)),
                             vertex_scalar_properties())(vprop);
              return result;
          }
      
      The whole code was changed to reflect this scheme, but now things are
      more centralized and less ad-hoc code needed to be
      written. Unfortunately, due to GCC's high memory usage during template
      instantiations, some of the code (namely all the degree correlation
      things) had to be split in multiple compilation units... Maybe this will
      change in the future if GCC gets optimized.
      
      This commit also touches other parts of code. More specifically, the way
      filtering gets done is very different. Now we only filter on boolean
      properties, and with the above scheme, the desired implementation runs
      with the correct chosen type, and no implicit type conversions should
      ever happen, which would have a bad impact on performance.
      0b66e272
  27. 03 Dec, 2007 1 commit
  28. 04 Nov, 2007 1 commit
  29. 09 Aug, 2007 1 commit
    • Tiago Peixoto's avatar
      * src/graph-tool: change layout and community graph options. · c3a6567d
      Tiago Peixoto authored
      	* src/boost-workaround/boost/graph/kamada_kawai_spring_layout.hpp: annotated code with openmp constructs.
      
      	* src/graph/graph_adaptor.hh: graph_type should be a typedef to the original graph.
      
      	* src/graph/graph_properties.hh, src/graph/graph_properties.cc: added pos_t type.
      
      	* src/boost-workaround/boost/graph/fruchterman_reingold.hpp: annotated code with openmp constructs.
      
      	* src/graph/graph_layout.cc: new file with graph layout routines.
      
      	* src/graph/graph.cc: removed graph layout routines.
      
      	* src/graph/graph_community_network.cc (struct get_community_network): fixed inversion of directedness test.
      
      	* src/graph/graph.cc (GraphInterface::LabelComponents): use vector_property_map instead of HashedDescriptor. Don't use a static map!
      
      	* src/graph/graph_adaptor.hh: fixed edge descriptor equality comparison, which must rely on underlying edge, regardless of whether it's inverted or not.
      
      
      git-svn-id: https://svn.forked.de/graph-tool/trunk@121 d4600afd-f417-0410-95de-beed9576f240
      c3a6567d
  30. 30 Jun, 2007 2 commits
  31. 17 Apr, 2007 1 commit
  32. 15 Apr, 2007 1 commit
  33. 15 Nov, 2006 1 commit
  34. 14 Nov, 2006 1 commit
  35. 04 Sep, 2006 1 commit
  36. 10 Jul, 2006 1 commit