Skip to content
Snippets Groups Projects
Commit d9717dc7 authored by Russel Arbore's avatar Russel Arbore
Browse files

Labels in xdot

parent 6b3364ec
No related branches found
No related tags found
1 merge request!163Enhancements for xdot
Pipeline #201560 passed
use std::collections::HashMap; use std::collections::{HashMap, HashSet};
use std::env::temp_dir; use std::env::temp_dir;
use std::fmt::Write; use std::fmt::Write;
use std::fs::File; use std::fs::File;
...@@ -93,7 +93,9 @@ pub fn write_dot<W: Write>( ...@@ -93,7 +93,9 @@ pub fn write_dot<W: Write>(
color, color,
module, module,
typing, typing,
&function.labels[node_id.idx()],
&function.schedules[node_id.idx()], &function.schedules[node_id.idx()],
&module.labels,
w, w,
)?; )?;
} }
...@@ -254,7 +256,9 @@ fn write_node<W: Write>( ...@@ -254,7 +256,9 @@ fn write_node<W: Write>(
color: &str, color: &str,
module: &Module, module: &Module,
typing: Option<&ModuleTyping>, typing: Option<&ModuleTyping>,
label_set: &HashSet<LabelID>,
schedules: &Vec<Schedule>, schedules: &Vec<Schedule>,
labels: &Vec<String>,
w: &mut W, w: &mut W,
) -> std::fmt::Result { ) -> std::fmt::Result {
let node = &module.functions[function_id.idx()].nodes[node_id.idx()]; let node = &module.functions[function_id.idx()].nodes[node_id.idx()];
...@@ -341,62 +345,39 @@ fn write_node<W: Write>( ...@@ -341,62 +345,39 @@ fn write_node<W: Write>(
if let Some(ty) = typing.map(|typing| typing[function_id.idx()][node_id.idx()]) { if let Some(ty) = typing.map(|typing| typing[function_id.idx()][node_id.idx()]) {
module.write_type(ty, &mut tylabel)?; module.write_type(ty, &mut tylabel)?;
} }
let mut iter = label_set.into_iter();
let label_set = if let Some(first) = iter.next() {
iter.fold(format!("{}", labels[first.idx()]), |b, i| {
format!("{}, {}", b, labels[i.idx()])
})
} else {
String::new()
};
let mut iter = schedules.into_iter(); let mut iter = schedules.into_iter();
let schedules = if let Some(first) = iter.next() { let schedules = if let Some(first) = iter.next() {
iter.fold(format!("{:?}", first), |b, i| format!("{}, {:?}", b, i)) iter.fold(format!("{:?}", first), |b, i| format!("{}, {:?}", b, i))
} else { } else {
String::new() String::new()
}; };
if tylabel.is_empty() && schedules.is_empty() { write!(
write!( w,
w, "{}_{}_{} [xlabel={}, label=<{}",
"{}_{}_{} [xlabel={}, label=<{}>, color={}];\n", node.lower_case_name(),
node.lower_case_name(), function_id.idx(),
function_id.idx(), node_id.idx(),
node_id.idx(), xlabel,
xlabel, label,
label, )?;
color if !tylabel.is_empty() {
)?; write!(w, "<BR /><FONT POINT-SIZE=\"8\">{}</FONT>", tylabel,)?;
} else if schedules.is_empty() { }
write!( if !label_set.is_empty() {
w, write!(w, "<BR /><FONT POINT-SIZE=\"8\">{}</FONT>", label_set,)?;
"{}_{}_{} [xlabel={}, label=<{}<BR /><FONT POINT-SIZE=\"8\">{}</FONT>>, color={}];\n", }
node.lower_case_name(), if !schedules.is_empty() {
function_id.idx(), write!(w, "<BR /><FONT POINT-SIZE=\"8\">{}</FONT>", schedules,)?;
node_id.idx(),
xlabel,
label,
tylabel,
color
)?;
} else if tylabel.is_empty() {
write!(
w,
"{}_{}_{} [xlabel={}, label=<{}<BR /><FONT POINT-SIZE=\"8\">{}</FONT>>, color={}];\n",
node.lower_case_name(),
function_id.idx(),
node_id.idx(),
xlabel,
label,
schedules,
color
)?;
} else {
write!(
w,
"{}_{}_{} [xlabel={}, label=<{}<BR /><FONT POINT-SIZE=\"8\">{}</FONT><BR /><FONT POINT-SIZE=\"8\">{}</FONT>>, color={}];\n",
node.lower_case_name(),
function_id.idx(),
node_id.idx(),
xlabel,
label,
tylabel,
schedules,
color
)?;
} }
write!(w, ">, color={}];\n", color)?;
Ok(()) Ok(())
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment