
#149: Revamp util::graph -------------------------+-------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Keywords: | -------------------------+-------------------------------------------------- * Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.

#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: | Keywords: --------------------------+------------------------------------------------- Old description:
* Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».)
All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL.
New description: * Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. * split `util::graph` classe(s) in two: graph « shell(s) », holding `tracked_ptr` to shared data; and * actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr, as the copying graphs becomes cheap (as for images). All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL. Comment (by levill_r): Mnetion that we should move `tracked_ptr` from `p_graph`/`p_line graph` to `util::graph`. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149#comment:1> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.

#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: | Keywords: rename cleanup --------------------------+------------------------------------------------- Changes (by levill_r): * keywords: => rename cleanup Old description:
* Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. * split `util::graph` classe(s) in two: graph « shell(s) », holding `tracked_ptr` to shared data; and * actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr, as the copying graphs becomes cheap (as for images).
All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL.
New description: * Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. * split `util::graph` classe(s) in two: graph « shell(s) », holding `tracked_ptr` to shared data; and * actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr, as the copying graphs becomes cheap (as for images). * Move graph-related types and routine from `mln/core/` to `mln/topo/`. All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL. Comment: Mention the move of `util::graph` and Co. to `mln/topo/`. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149#comment:2> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.

#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: | Keywords: rename cleanup --------------------------+------------------------------------------------- Old description:
* Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. * split `util::graph` classe(s) in two: graph « shell(s) », holding `tracked_ptr` to shared data; and * actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr, as the copying graphs becomes cheap (as for images). * Move graph-related types and routine from `mln/core/` to `mln/topo/`.
All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL.
New description: * Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. split `util::graph` classe(s) in two: * the graph « shell(s) », holding `tracked_ptr` to shared data; and * the actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr`, as copying graphs will become cheap (as for images). * Move graph-related types and routine from `mln/core/` to `mln/topo/`. All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL. Comment (by levill_r): Reformat description. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149#comment:3> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.

#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: | Keywords: rename cleanup --------------------------+------------------------------------------------- Comment (by lazzara): Work done so far: * Got rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * properties attached to vertices and edges moved out of the graph (graph and graph_base are not merged yet though). * `tracked_ptr` used to handle the data of the graph. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149#comment:4> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.

Olena a écrit :
#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: | Keywords: rename cleanup --------------------------+------------------------------------------------- Comment (by lazzara):
Work done so far: * Got rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * properties attached to vertices and edges moved out of the graph (graph and graph_base are not merged yet though). * `tracked_ptr` used to handle the data of the graph.
Thanks! If you need some inspiration on how to externally attach data to a graph, you can have a look at the way geometry information is attached to (and computed on) complex faces: https://trac.lrde.org/olena/browser/branches/cleanup-2008/milena/mln/geom/co...

#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: new Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: | Keywords: rename cleanup --------------------------+------------------------------------------------- Old description:
* Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. split `util::graph` classe(s) in two: * the graph « shell(s) », holding `tracked_ptr` to shared data; and * the actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr`, as copying graphs will become cheap (as for images). * Move graph-related types and routine from `mln/core/` to `mln/topo/`.
All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL.
New description: * Get rid of superfluous dynamic allocations (w.r.t. vertices & edges handling). * Move properties attached to vertices and edges out of the graph (this should allow the merging of `util::graph` and `util::internal::graph_base`. * As for images, use a `tracked_ptr` to handle the data of the graph, i.e. split `util::graph` classe(s) in two: * the graph « shell(s) », holding `tracked_ptr` to shared data; and * the actual graph data (vertices and egdes). Also, handle graphs directly from `p_graph` and `p_line_graph` instead of using a `tracked_ptr`, as copying graphs will become cheap (as for images). Additional (optional) propositions: * Allow the removal of vertices and edges. Don't forget to warn users about the invalidation of vertex and edge ids (handlers). * Stop using the term « id » (« identifier ») for vertices and edges, and prefer the term « handler » ? (The BGL call them « descriptors ».) * Move graph-related types and routine from `mln/util/` to `mln/topo/`. All these changes might bring us closer to the BGL' `adjacency_list`. See how we could factor things, while not requiring a dependency on the BGL. -- Comment(by levill_r): Qualify some propositions as optional. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149#comment:5> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.

#149: Revamp util::graph --------------------------+------------------------------------------------- Reporter: levill_r | Owner: levill_r Type: enhancement | Status: closed Priority: major | Milestone: Olena 1.0 Component: Milena | Version: 1.0 Resolution: fixed | Keywords: rename cleanup --------------------------+------------------------------------------------- Changes (by levill_r): * status: new => closed * resolution: => fixed Comment: Guillaume addressed the main issues, closing. -- Ticket URL: <https://trac.lrde.org/olena/ticket/149#comment:6> Olena <http://olena.lrde.epita.fr> Olena, a generic and efficient C++ image processing library.
participants (3)
-
Olena
-
Olena Trac
-
Roland Levillain