本文整理汇总了Golang中github.com/axel-freesp/sge/interface/behaviour.PortIf.AddConnection方法的典型用法代码示例。如果您正苦于以下问题:Golang PortIf.AddConnection方法的具体用法?Golang PortIf.AddConnection怎么用?Golang PortIf.AddConnection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/axel-freesp/sge/interface/behaviour.PortIf
的用法示例。
在下文中一共展示了PortIf.AddConnection方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: AddNewObject
func (p *port) AddNewObject(tree tr.TreeIf, cursor tr.Cursor, obj tr.TreeElementIf) (newCursor tr.Cursor, err error) {
switch obj.(type) {
case bh.ConnectionIf:
conn := obj.(bh.ConnectionIf)
var thisPort, otherPort bh.PortIf
if p.Direction() == gr.InPort {
otherPort = conn.From()
thisPort = conn.To()
} else {
otherPort = conn.To()
thisPort = conn.From()
}
if p != thisPort {
log.Println("p =", p)
log.Println("thisPort =", thisPort)
log.Fatal("port.AddNewObject error: invalid connection ", conn)
}
sgt := thisPort.Node().Context()
if sgt != otherPort.Node().Context() {
log.Fatal("port.AddNewObject error: nodes have different context: ", conn)
}
contextCursor := tree.Parent(tree.Parent(cursor))
thisPort.AddConnection(conn)
newCursor = p.treeAddNewObject(tree, cursor, conn, otherPort)
context := tree.Object(contextCursor)
switch context.(type) {
case bh.SignalGraphIf:
case bh.ImplementationIf:
// propagate new edge to all instances of embracing type
nt := tree.Object(tree.Parent(contextCursor))
for _, nn := range nt.(bh.NodeTypeIf).Instances() {
nCursor := tree.Cursor(nn)
tCursor := tree.CursorAt(nCursor, context)
pCursor := tree.CursorAt(tCursor, p)
pCursor.Position = cursor.Position
p.treeAddNewObject(tree, pCursor, conn, otherPort)
}
default:
log.Fatalf("port.AddNewObject error: wrong context type %T: %v\n", context, context)
}
default:
log.Fatalf("port.AddNewObject error: invalid type %T: %v\n", obj, obj)
}
return
}