-
Notifications
You must be signed in to change notification settings - Fork 1
freetdi/gala
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Gala is a C++ graph implementation inspired by boost/BGL, but with low level
access. you choose the containers and data types and get full access -- at
your own risk.
Some parts of the code and some decisions are under construction. The example
graphs, used as boost graphs, are meant to be safe.
The treedec graph interface is following treedec and might be subject to future
changes.
A gala graph has 4 template args, two of which are container types. The third
is the (internal) vertex representation, the fourth is a configuration.
CONTAINER TYPES
.. are STL style containers, but with one argument only. If you
want to use custom allocators, you will have to wrap the type such as in
template<class T>
using some_container_type=std::vector<T, my_own_allocator>;
and then pass some_container_type to gala::graph.
INTERNAL VERTEX REPRESENTATION
Is an unsigned integer type, or gala::vertex_ptr_tag (default). The latter
meaning that only pointers (to the edgesets) are used internally. saving one
indirection.
CONFIGURATION
A gala::graph configuration is a struct that defines the graph behaviour. It
holds variables of type static constexpr bool, such as
force_simple the graph does not allow multiple edges
(currently, this is on by default)
force_multigraph the graph does allow multiple edges
(not implemented for sets)
force_ordering outedges are stored so iteration will be ascending
(default off)
is_directed edges are tuples, not sets.
force_symmetric (directed graphs only), (a,b) and (b,a) have the same
multiplicity (incomplete)
is_loopless not yet...
force_antisymm not yet... only for directed. if theres an edge (a,b), then
there is no edge (b,a)
These may affect the complexity of add_edge, copy and move (assignment)
operations, depending on the chosen containers.
TESTS
$ make check
will compile and run some tests. dependencys only work locally. Test status
is the return code. Anything printed is for orientation only.
PYTHON PACKAGE
See python subdirectory for supplementary material
About
graph abstraction with low-level access (C++)
Resources
Stars
Watchers
Forks
Packages 0
No packages published