Pass port information to BGL

Open
#419 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
cpp
Domain
tooling

Research direction

Start with the boost::read_graphviz() documentation and its “Future Work” note about passing port information to BGL. Clarify the desired representation for port-to-port edges, the default behavior when ports are absent, and the API scope using the sample DOT graph; done requires maintainer agreement on that design before implementation.

Written by the indexing model from the issue text.

Description

I read in section "Future Work" of boost::read_graphviz():

  • Passing port information to BGL.
    [...]

I couldn't find any related ongoing work on Github:

  • Is someone working on this already?
  • Is this still something that BGL would want to implement?

I would be interested in the feature, and I would even be interested in implementing it myself if nothing's already being done. That being said, I have zero familiarity with boost's code base, so I'd be interested in getting some pointers as to how you would like to get it done.

With ports, I understand that edges now connect ports, and not nodes... Plus, ports are optional, so we'd need to have a default one. Without being familiar with the code base, I guess this change will require a not-so-small patch.

As for the use case, (IMO) it's especially useful to draw network layouts (with information like "which port of device X is connected to which port of device Y").

graph {
    node [shape=record];

    rankdir=LR

    0 [label="switch 1|{<eth1>eth1|<eth2>eth2|<eth3>eth3|<eth4>eth4}"];
    1 [label="switch 2|{<eth1>eth1|<eth2>eth2|<eth3>eth3|<eth4>eth4}"];
    2 [label="switch 3|{<eth1>eth1|<eth2>eth2|<eth3>eth3|<eth4>eth4}"];

    0:eth1 -- 1:eth1;
    1:eth2 -- 2:eth1;
    2:eth2 -- 0:eth2;
}

Image

Dominant language
C++
Stars
395
Forks
239
Avg merge
18h 50m
Merged PRs (30d)
20

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/graph

All issues in boostorg/graph

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.