|
Boost : |
From: Gordon Woodhull (gordon_at_[hidden])
Date: 2008-07-07 08:06:25
On Jul 6, 2008, at 11:28 AM, Mathias Gaunard wrote:
> Gordon Woodhull wrote:
>> I just have to share this little insight: finally, a concise
>> definition.
>>
>> A metagraph is a system of objects where the types of the objects
>> (classes) and the relations between them (e.g. pointers, mappings,
>> containers) can be described in a graph called a pattern. In the C++
>> implementation, the patterns are metadata, which allows static typing
>> and static polymorphism and moves the abstraction penalty to compile
>> time (when the pattern is known at coding time).
>
> I don't know if this is related to what you have in mind, but the
> Scrap
> your Boilerplate approach [1] allows to traverse any recursive data
> structure, given each type is a valid Fusion sequence (i.e. anything
> tuple-like).
> It assumes a tree, but the structure could actually perfectly be a
> graph.
Thanks - yeah, I think Dan's and my libraries are on a similar level
of abstraction - for one thing, they're both made possible by Fusion's
abstraction of heterogeneous containers.
My library is mainly concerned with generating heterogeneous graph
data structures (more types of nodes or edges, multiple levels of
graph, etc.).
I expect that Traversal will be helpful for implementing heterogeneous
graph algorithms, i.e. when you want to write an algorithm that
operates on any metagraph pattern. Graph traversal is a little bit
more tricky than hierarchical data traversal, because you have to keep
track of where you've been, but otherwise the horizontal and vertical
traversals are breadth-first and depth-first search.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk