Skip to content

Commit 1a2ef55

Browse files
author
Damian Rouson
committed
fix(example): use graphviz_digraph function
dag-to-dot.f90 now prints .dot file contents that the user can redirect to a file and convert to PDF.
1 parent 1bdf47e commit 1a2ef55

File tree

1 file changed

+62
-62
lines changed

1 file changed

+62
-62
lines changed

example/dag-to-dot.f90

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -19,73 +19,73 @@ program dag_to_dot
1919
use iso_varying_string, only : var_str, varying_string
2020
implicit none
2121

22-
enum, bind(C)
23-
enumerator :: &
24-
assert_m=1, dag_m, payload_m, compile_m, data_loc_map_m, task_m, task_item_m, app_m, app_generator_m, image_m, main, &
25-
task_item_s, compile_s, app_generator_s, data_loc_map_s, payload_s, app_s, mailbox_m, image_s, final_task_m, final_task_s
26-
end enum
22+
character(len=*), parameter :: longest_name = "app_generator_m"
23+
character(len=len(longest_name)), parameter :: names(*) = &
24+
[character(len=len(longest_name)) :: &
25+
"assert_m", "dag_m", "payload_m", "compile_m", "data_loc_map_m", "task_m", "task_item_m", "app_m", "app_generator_m" &
26+
,"image_m", "main", "task_item_s", "compile_s", "app_generator_s", "data_loc_map_s", "payload_s", "app_s", "mailbox_m" &
27+
,"image_s", "final_task_m", "final_task_s" &
28+
]
29+
associate( &
30+
assert_m => findloc(names, "assert_m", dim=1) &
31+
,dag_m => findloc(names, "dag_m", dim=1) &
32+
,payload_m => findloc(names, "payload_m", dim=1) &
33+
,compile_m => findloc(names, "compile_m", dim=1) &
34+
,data_loc_map_m => findloc(names, "data_loc_map_m", dim=1) &
35+
,task_m => findloc(names, "task_m", dim=1) &
36+
,task_item_m => findloc(names, "task_item_m", dim=1) &
37+
,app_m => findloc(names, "app_m", dim=1) &
38+
,app_generator_m => findloc(names, "app_generator_m", dim=1) &
39+
,image_m => findloc(names, "image_m", dim=1) &
40+
,main => findloc(names, "main", dim=1) &
41+
,task_item_s => findloc(names, "task_item_s", dim=1) &
42+
,compile_s => findloc(names, "compile_s", dim=1) &
43+
,app_generator_s => findloc(names, "app_generator_s", dim=1) &
44+
,data_loc_map_s => findloc(names, "data_loc_map_s", dim=1) &
45+
,payload_s => findloc(names, "payload_s", dim=1) &
46+
,app_s => findloc(names, "app_s", dim=1) &
47+
,mailbox_m => findloc(names, "mailbox_m", dim=1) &
48+
,image_s => findloc(names, "image_s", dim=1) &
49+
,final_task_m => findloc(names, "final_task_m", dim=1) &
50+
,final_task_s => findloc(names, "final_task_s", dim=1) &
51+
)
2752

28-
integer, parameter :: num_vertices = size([ &
29-
assert_m, dag_m, payload_m, compile_m, data_loc_map_m, task_m, task_item_m, app_m, app_generator_m, image_m, main, &
30-
task_item_s, compile_s, app_generator_s, data_loc_map_s, payload_s, app_s, mailbox_m, image_s , final_task_m, final_task_s &
31-
])
32-
33-
type(varying_string) names(num_vertices)
34-
35-
names(assert_m) = var_str("assert_m")
36-
names(dag_m) = var_str("dag_m")
37-
names(payload_m) = var_str("payload_m")
38-
names(compile_m) = var_str("compile_m")
39-
names(data_loc_map_m) = var_str("data_loc_map_m")
40-
names(task_m) = var_str("task_m")
41-
names(task_item_m) = var_str("task_item_m")
42-
names(app_m) = var_str("app_m")
43-
names(app_generator_m) = var_str("app_generator_m")
44-
names(image_m) = var_str("image_m")
45-
names(main) = var_str("main")
46-
names(task_item_s) = var_str("task_item_s")
47-
names(compile_s) = var_str("compile_s")
48-
names(app_generator_s) = var_str("app_generator_s")
49-
names(data_loc_map_s) = var_str("data_loc_map_s")
50-
names(payload_s) = var_str("payload_s")
51-
names(app_s) = var_str("app_s")
52-
names(mailbox_m) = var_str("mailbox_m")
53-
names(image_s) = var_str("image_s")
54-
names(final_task_m) = var_str("final_task_m")
55-
names(final_task_s) = var_str("final_task_s")
56-
5753
block
5854
character(len=*), parameter :: external_ = 'shape=square,fillcolor="green",style=filled'
59-
character(len=*), parameter :: root = 'shape=circle,fillcolor="white",style=filled'
60-
character(len=*), parameter :: branch = 'shape=square,fillcolor="SlateGray1",style=filled'
61-
character(len=len(branch)), parameter :: leaf = 'shape=circle,fillcolor="cornsilk",style=filled'
62-
63-
associate(feats => &
55+
character(len=*), parameter :: root = 'shape=circle,fillcolor="white",style=filled'
56+
character(len=*), parameter :: branch = 'shape=square,fillcolor="SlateGray1",style=filled'
57+
character(len=len(branch)), parameter :: leaf = 'shape=circle,fillcolor="cornsilk",style=filled'
58+
type(dag_t) feats
59+
type(varying_string) name_string(size(names))
60+
61+
name_string = var_str(names)
62+
63+
feats = &
6464
dag_t([ &
65-
vertex_t([integer::], names(assert_m), var_str(external_)) &
66-
,vertex_t([integer:: ], names(dag_m), var_str(external_)) &
67-
,vertex_t([integer::], names(payload_m), var_str(leaf)) &
68-
,vertex_t([integer:: ], names(compile_m), var_str(leaf)) &
69-
,vertex_t([integer::], names(data_loc_map_m), var_str(leaf)) &
70-
,vertex_t([payload_m], names(task_m), var_str(branch)) &
71-
,vertex_t([task_m], names(task_item_m), var_str(leaf)) &
72-
,vertex_t([dag_m, task_item_m], names(app_m), var_str(branch)) &
73-
,vertex_t([app_m, dag_m, task_item_m, compile_m], names(app_generator_m), var_str(branch)) &
74-
,vertex_t([app_m, data_loc_map_m], names(image_m), var_str(branch)) &
75-
,vertex_t([app_generator_m, image_m], names(main), var_str(root)) &
76-
,vertex_t([task_item_m], names(task_item_s), var_str(root)) &
77-
,vertex_t([compile_m], names(compile_s), var_str(branch)) &
78-
,vertex_t([app_generator_m], names(app_generator_s), var_str(root)) &
79-
,vertex_t([data_loc_map_m], names(data_loc_map_s), var_str(root)) &
80-
,vertex_t([payload_m], names(payload_s), var_str(root)) &
81-
,vertex_t([app_m, assert_m], names(app_s), var_str(root)) &
82-
,vertex_t([payload_m], names(mailbox_m), var_str(branch)) &
83-
,vertex_t([image_m, mailbox_m], names(image_s), var_str(root)) &
84-
,vertex_t([data_loc_map_m, payload_m, task_m], names(final_task_m), var_str(branch)) &
85-
,vertex_t([final_task_m], names(final_task_s), var_str(root)) &
86-
]))
65+
vertex_t([integer::], name_string(assert_m), var_str(external_)) &
66+
,vertex_t([integer:: ], name_string(dag_m), var_str(external_)) &
67+
,vertex_t([integer::], name_string(payload_m), var_str(leaf) ) &
68+
,vertex_t([integer:: ], name_string(compile_m), var_str(leaf) ) &
69+
,vertex_t([integer::], name_string(data_loc_map_m), var_str(leaf) ) &
70+
,vertex_t([payload_m], name_string(task_m), var_str(branch) ) &
71+
,vertex_t([task_m], name_string(task_item_m), var_str(leaf) ) &
72+
,vertex_t([dag_m, task_item_m], name_string(app_m), var_str(branch) ) &
73+
,vertex_t([app_m, dag_m, task_item_m, compile_m], name_string(app_generator_m), var_str(branch) ) &
74+
,vertex_t([app_m, data_loc_map_m], name_string(image_m), var_str(branch) ) &
75+
,vertex_t([app_generator_m, image_m], name_string(main), var_str(root) ) &
76+
,vertex_t([task_item_m], name_string(task_item_s), var_str(root) ) &
77+
,vertex_t([compile_m], name_string(compile_s), var_str(branch) ) &
78+
,vertex_t([app_generator_m], name_string(app_generator_s), var_str(root) ) &
79+
,vertex_t([data_loc_map_m], name_string(data_loc_map_s), var_str(root) ) &
80+
,vertex_t([payload_m], name_string(payload_s), var_str(root) ) &
81+
,vertex_t([app_m, assert_m], name_string(app_s), var_str(root) ) &
82+
,vertex_t([payload_m], name_string(mailbox_m), var_str(branch) ) &
83+
,vertex_t([image_m, mailbox_m], name_string(image_s), var_str(root) ) &
84+
,vertex_t([data_loc_map_m, payload_m, task_m], name_string(final_task_m), var_str(branch) ) &
85+
,vertex_t([final_task_m], name_string(final_task_s), var_str(root) ) &
86+
])
8787
print *, feats%graphviz_digraph()
88-
end associate
8988
end block
89+
end associate
9090

9191
end program

0 commit comments

Comments
 (0)