Skip to content

Commit fead9d2

Browse files
authored
feat: add aghead and agtail (#105)
1 parent f96992e commit fead9d2

File tree

6 files changed

+138
-0
lines changed

6 files changed

+138
-0
lines changed

cgraph/cgraph.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,22 @@ func (e *Edge) SetNode(v *Node) {
528528
e.wasm.SetNode(v.getWasm())
529529
}
530530

531+
func (e *Edge) Head() (*Node, error) {
532+
n, err := e.wasm.Head(context.Background())
533+
if err != nil {
534+
return nil, err
535+
}
536+
return toNode(n), nil
537+
}
538+
539+
func (e *Edge) Tail() (*Node, error) {
540+
n, err := e.wasm.Tail(context.Background())
541+
if err != nil {
542+
return nil, err
543+
}
544+
return toNode(n), nil
545+
}
546+
531547
func (c *CommonFields) Disc() *Disc {
532548
return toDisc(c.wasm.GetDisc())
533549
}

graphviz_test.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,3 +288,65 @@ func TestNodeDegree(t *testing.T) {
288288
}
289289
}
290290
}
291+
292+
func TestEdgeSourceAndTarget(t *testing.T) {
293+
ctx := context.Background()
294+
graph, err := graphviz.New(ctx)
295+
if err != nil {
296+
t.Fatalf("Error: %+v", err)
297+
}
298+
299+
g, err := graph.Graph()
300+
if err != nil {
301+
t.Fatalf("Error: %+v", err)
302+
}
303+
304+
nodeA, err := g.CreateNodeByName("a")
305+
if err != nil {
306+
t.Fatalf("Error: %+v", err)
307+
}
308+
309+
nodeB, err := g.CreateNodeByName("b")
310+
if err != nil {
311+
t.Fatalf("Error: %+v", err)
312+
}
313+
314+
edge, err := g.CreateEdgeByName("edge", nodeA, nodeB)
315+
if err != nil {
316+
t.Fatalf("Error: %+v", err)
317+
}
318+
319+
head, err := edge.Head()
320+
if err != nil {
321+
t.Fatalf("Error: %+v", err)
322+
}
323+
if head == nil {
324+
t.Fatalf("Source is nil")
325+
}
326+
327+
headName, err := head.Name()
328+
if err != nil {
329+
t.Fatalf("Error: %+v", err)
330+
}
331+
332+
if headName != "b" {
333+
t.Fatalf("Expected source name to be 'b', got '%s'", headName)
334+
}
335+
336+
target, err := edge.Tail()
337+
if err != nil {
338+
t.Fatalf("Error: %+v", err)
339+
}
340+
if target == nil {
341+
t.Fatalf("Target is nil")
342+
}
343+
344+
tailName, err := target.Name()
345+
if err != nil {
346+
t.Fatalf("Error: %+v", err)
347+
}
348+
349+
if tailName != "a" {
350+
t.Fatalf("Expected target name to be 'a', got '%s'", tailName)
351+
}
352+
}

internal/wasm/bind.go

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/wasm/bind.proto

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,26 @@ option (nori.file).export = {
690690
pointer: 1
691691
}
692692
}
693+
method {
694+
recv: "Edge"
695+
name: "head"
696+
alias: "aghead"
697+
return {
698+
kind: STRUCT
699+
ref: "Node"
700+
pointer: 1
701+
}
702+
}
703+
method {
704+
recv: "Edge"
705+
name: "tail"
706+
alias: "agtail"
707+
return {
708+
kind: STRUCT
709+
ref: "Node"
710+
pointer: 1
711+
}
712+
}
693713
method {
694714
recv: "Graph"
695715
name: "idEdge"

internal/wasm/build/bind.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5690,6 +5690,26 @@ void wasm_bridge_Graph_edge(void * _arg0, void * _arg1, void * _arg2, void * _ar
56905690
*_arg5 = v;
56915691
}
56925692

5693+
void wasm_bridge_Edge_head(void * _arg0, void ** _arg1) {
5694+
Agedge_t * arg0;
5695+
arg0 = (Agedge_t *)_arg0;
5696+
Agnode_t * ret = aghead(
5697+
arg0
5698+
);
5699+
Agnode_t * v = (Agnode_t *)ret;
5700+
*_arg1 = v;
5701+
}
5702+
5703+
void wasm_bridge_Edge_tail(void * _arg0, void ** _arg1) {
5704+
Agedge_t * arg0;
5705+
arg0 = (Agedge_t *)_arg0;
5706+
Agnode_t * ret = agtail(
5707+
arg0
5708+
);
5709+
Agnode_t * v = (Agnode_t *)ret;
5710+
*_arg1 = v;
5711+
}
5712+
56935713
void wasm_bridge_Graph_idEdge(void * _arg0, void * _arg1, void * _arg2, unsigned long long int _arg3, int _arg4, void ** _arg5) {
56945714
Agraph_t * arg0;
56955715
arg0 = (Agraph_t *)_arg0;

internal/wasm/graphviz.wasm

110 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)