
Hello Im trying to change Blobs to become an editor for a language which is not exactly a directed graph. In such system I have the notion of ports in nodes; which node have a previously fixed number of labelled ports and instead of having edges between nodes, its only allowed having edges connecting ports. For the picture of Malcolm Wallace "Failure Propagation and Transformation Calculus" in Blobs web page it seems to me that such framework addresses the same situation. So what I would like to know is if someone have ever found this problem and if someone have some idea for a way of implementing this generalization of directed graphs. One solution is create so many new nodes as the sum in the range of primitive nodes of the sum of ports for that specific node. Them it is necessary to force some constrains in the graph like the user cannot create edges from/to primitive nodes and the selection of a primitive node implies the automatic selection of it self and its port nodes. Does anyone have a better idea? Regards Miguel Vilaça

"José Miguel Vilaça"
I'm trying to change Blobs to become an editor for a language which is not exactly a directed graph. In such system I have the notion of ports in nodes; which node have a previously fixed number of labelled ports and instead of having edges between nodes, it's only allowed having edges connecting ports.
For the picture of Malcolm Wallace "Failure Propagation and Transformation Calculus" in Blobs web page it seems to me that such framework addresses the same situation.
Yes, my FPTC application needs the concept of ports on nodes, in order to pass incoming data from an edge into the correct position of the expression stored at the node. However I haven't implemented it yet - the ordering of incoming/outgoing edges is arbitrary at the moment. My thought is to permit an optional "arity" specification on a node, giving it a definite number of in-ports and out-ports. Such ports might optionally be associated with different "attachment points" in the node shape, if a visual representation of the ports is needed. Every edge must then record, not only its source node and target node, but the port-number within each node (if it has ports). The context menu on an edge will allow these port-numbers to be changed or swapped. Regards, Malcolm
participants (2)
-
José Miguel Vilaça
-
Malcolm Wallace