Skip to content

Commit

Permalink
updated rendering in analysis, other minor updates and corrections
Browse files Browse the repository at this point in the history
  • Loading branch information
erwanM974 committed Sep 3, 2022
1 parent 22155bf commit 281abe7
Show file tree
Hide file tree
Showing 19 changed files with 229 additions and 98 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "hibou_label"
version = "0.7.6"
version = "0.7.7"
authors = ["Erwan Mahe"]
edition = "2018"

Expand Down
23 changes: 9 additions & 14 deletions src/loggers/graphic/glog_ana.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ impl AnalysisLogger for GraphicProcessLogger {
fn log_init(&mut self,
gen_ctx: &GeneralContext,
interaction: &Interaction,
remaining_multi_trace: &AnalysableMultiTrace) {
remaining_multi_trace: &AnalysableMultiTrace,
is_simulation : bool) {
self.initiate();
self.write_interaction(gen_ctx,1, interaction, &Some(remaining_multi_trace));
self.write_interaction(gen_ctx,1, interaction, &Some(remaining_multi_trace), is_simulation);
}

fn log_term(&mut self,
Expand All @@ -51,31 +52,25 @@ impl AnalysisLogger for GraphicProcessLogger {
new_state_id: u32,
action_position: &Position,
executed_actions: &HashSet<TraceAction>,
consu_set : &HashSet<usize>,
sim_map: &HashMap<usize, SimulationStepKind>,
new_interaction: &Interaction,
remaining_multi_trace: &AnalysableMultiTrace) {
// *** Parent Interaction Node
let is_simulation = sim_map.len() > 0;
remaining_multi_trace: &AnalysableMultiTrace,
is_simulation : bool) {
// ***
self.write_firing(gen_ctx,new_state_id,action_position,executed_actions,is_simulation,sim_map);
self.write_firing(gen_ctx,new_state_id,action_position,executed_actions,consu_set,sim_map);
// *** Transition To Firing
{
let mut tran_gv_options : GraphvizEdgeStyle = Vec::new();
tran_gv_options.push( GraphvizEdgeStyleItem::Head( GvArrowHeadStyle::Vee(GvArrowHeadSide::Both) ) );
if is_simulation {
tran_gv_options.push( GraphvizEdgeStyleItem::Color(GraphvizColor::gray) );
}
self.write_edge(format!("i{:}", parent_state_id), format!("f{:}", new_state_id), tran_gv_options);
}
// *** Resulting Interaction Node
self.write_interaction(gen_ctx, new_state_id, new_interaction, &Some(remaining_multi_trace));
self.write_interaction(gen_ctx, new_state_id, new_interaction, &Some(remaining_multi_trace),is_simulation);
// *** Transition To Interaction Node
{
let mut tran_gv_options : GraphvizEdgeStyle = Vec::new();
tran_gv_options.push( GraphvizEdgeStyleItem::Head( GvArrowHeadStyle::Vee(GvArrowHeadSide::Both) ) );
if is_simulation {
tran_gv_options.push( GraphvizEdgeStyleItem::Color(GraphvizColor::gray) );
}
self.write_edge(format!("f{:}", new_state_id), format!("i{:}", new_state_id), tran_gv_options);
}
}
Expand All @@ -99,7 +94,7 @@ impl AnalysisLogger for GraphicProcessLogger {
self.write_edge(parent_interaction_node_name, format!("h{:}", new_state_id), tran_gv_options);
}
// *** Resulting Interaction Node
self.write_interaction(gen_ctx, new_state_id, hidden_interaction, &Some(remaining_multi_trace) );
self.write_interaction(gen_ctx, new_state_id, hidden_interaction, &Some(remaining_multi_trace), false );
// *** Transition To Interaction Node
{
let mut tran_gv_options : GraphvizEdgeStyle = Vec::new();
Expand Down
6 changes: 3 additions & 3 deletions src/loggers/graphic/glog_explo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ impl ExplorationLogger for GraphicProcessLogger {

fn log_init(&mut self, interaction: &Interaction, gen_ctx: &GeneralContext) {
self.initiate();
self.write_interaction(gen_ctx,1, interaction, &None);
self.write_interaction(gen_ctx,1, interaction, &None, false);
}

fn log_term(&mut self, options_as_str: &Vec<String>) {
Expand All @@ -43,15 +43,15 @@ impl ExplorationLogger for GraphicProcessLogger {
executed_actions: &HashSet<TraceAction>,
new_interaction: &Interaction) {
// ***
self.write_firing(gen_ctx,new_state_id,action_position,executed_actions,false,&HashMap::new());
self.write_firing(gen_ctx,new_state_id,action_position,executed_actions,&HashSet::new(),&HashMap::new());
// *** Transition To Firing
{
let mut tran_gv_options : GraphvizEdgeStyle = Vec::new();
tran_gv_options.push( GraphvizEdgeStyleItem::Head( GvArrowHeadStyle::Vee(GvArrowHeadSide::Both) ) );
self.write_edge(format!("i{:}", parent_state_id), format!("f{:}", new_state_id), tran_gv_options);
}
// *** Resulting Interaction Node
self.write_interaction(gen_ctx, new_state_id, new_interaction, &None);
self.write_interaction(gen_ctx, new_state_id, new_interaction, &None, false);
// *** Transition To Interaction Node
{
let mut tran_gv_options : GraphvizEdgeStyle = Vec::new();
Expand Down
12 changes: 5 additions & 7 deletions src/loggers/graphic/graphic_logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,11 @@ impl GraphicProcessLogger {
gen_ctx : &GeneralContext,
new_state_id : u32,
new_interaction : &Interaction,
remaining_multi_trace : &Option<&AnalysableMultiTrace>) {
remaining_multi_trace : &Option<&AnalysableMultiTrace>,
is_simulation : bool) {
// ***
let int_img_path : String = format!("./temp/{:}_i{}.png", self.log_name ,new_state_id);
draw_interaction(&int_img_path, new_interaction, gen_ctx, remaining_multi_trace);
draw_interaction(&int_img_path, new_interaction, gen_ctx, remaining_multi_trace, is_simulation);
// ***
let mut node_gv_options : GraphvizNodeStyle = Vec::new();
node_gv_options.push( GraphvizNodeStyleItem::Image( int_img_path ) );
Expand All @@ -176,18 +177,15 @@ impl GraphicProcessLogger {
new_state_id : u32,
action_position : &Position,
executed_actions : &HashSet<TraceAction>,
is_simulation : bool,
consu_set : &HashSet<usize>,
sim_map : &HashMap<usize,SimulationStepKind>) {
let firing_node_path : String = format!("./temp/{:}_f{}.png", self.log_name ,new_state_id);
draw_firing(&firing_node_path, action_position, executed_actions, sim_map, gen_ctx);
draw_firing(&firing_node_path, action_position, executed_actions, consu_set, sim_map, gen_ctx);
// ***
let mut firing_gv_node_options : GraphvizNodeStyle = Vec::new();
firing_gv_node_options.push( GraphvizNodeStyleItem::Image( firing_node_path ) );
firing_gv_node_options.push(GraphvizNodeStyleItem::Label( "".to_string() ));
firing_gv_node_options.push( GraphvizNodeStyleItem::Shape(GvNodeShape::Rectangle) );
if is_simulation {
firing_gv_node_options.push( GraphvizNodeStyleItem::Color(GraphvizColor::gray) );
}
// ***
let firing_node_name = format!("f{:}", new_state_id);
self.write_node( firing_node_name.clone(), firing_gv_node_options);
Expand Down
1 change: 0 additions & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ extern crate maplit;
pub mod core;
pub mod from_hfiles;
pub mod rendering;
//pub mod process;
pub mod ui;
pub mod plantuml;
//pub mod canonize;
Expand Down
7 changes: 5 additions & 2 deletions src/process/ana_proc/interface/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ pub trait AnalysisLogger {
fn log_init(&mut self,
gen_ctx : &GeneralContext,
interaction : &Interaction,
remaining_multi_trace : &AnalysableMultiTrace);
remaining_multi_trace : &AnalysableMultiTrace,
is_simulation : bool);

fn log_term(&mut self,
options_as_str : &Vec<String>);
Expand All @@ -42,9 +43,11 @@ pub trait AnalysisLogger {
new_state_id : u32,
action_position : &Position,
executed_actions : &HashSet<TraceAction>,
consu_set : &HashSet<usize>,
sim_map : &HashMap<usize,SimulationStepKind>,
new_interaction : &Interaction,
remaining_multi_trace : &AnalysableMultiTrace);
remaining_multi_trace : &AnalysableMultiTrace,
is_simulation : bool);

fn log_hide(&mut self,
gen_ctx : &GeneralContext,
Expand Down
2 changes: 1 addition & 1 deletion src/process/ana_proc/interface/priorities.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ impl AbstractPriorities for AnalysisPriorities {
my_str.push_str( &format!("emission={:},",self.emission) );
my_str.push_str( &format!("reception={:},",self.reception) );
my_str.push_str( &format!("multi-rdv={:},",self.multi_rdv) );
my_str.push_str( &format!("in_loop={:},",self.in_loop) );
my_str.push_str( &format!("loop={:},",self.in_loop) );
my_str.push_str( &format!("hide={:},",self.hide) );
my_str.push_str( &format!("simu={:}",self.simu) );
return my_str;
Expand Down
6 changes: 4 additions & 2 deletions src/process/ana_proc/interface/step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ pub enum SimulationStepKind {

pub enum AnalysisStepKind {
Hide( HashSet<usize> ), // all the lifelines to hide
Simulate(FrontierElement,HashMap<usize,SimulationStepKind>) // for each lifeline on which simulation is done, which kind (the other lifelines, if participating in the action, consume events)
Simulate(FrontierElement,
HashSet<usize>, // co-localisations on which multi-trace action consumption must be done
HashMap<usize,SimulationStepKind>) // co-localisations on which simulation must be done and which kind
}

impl AbstractStepKind<AnalysisConfig> for AnalysisStepKind {
Expand All @@ -44,7 +46,7 @@ impl AbstractStepKind<AnalysisConfig> for AnalysisStepKind {
AnalysisStepKind::Hide(_) => {
return 0;
},
AnalysisStepKind::Simulate(frt_elt,sim_map) => {
AnalysisStepKind::Simulate(frt_elt,consu_set,sim_map) => {
let mut priority : i32 = 0;
match frt_elt.act_kind {
TraceActionKind::Emission => {
Expand Down
33 changes: 19 additions & 14 deletions src/process/ana_proc/local_analysis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,6 @@ fn perform_local_analysis(gen_ctx : &GeneralContext,
canal_id : usize,
canal : &AnalysableMultiTraceCanal) -> GlobalVerdict {
if canal.flag_dirty4local && canal.trace.len() > 0 {
// ***
match parent_analysis_kind {
AnalysisKind::Simulate( sim_before ) => {
if *sim_before && (canal.consumed == 0) {
// here we allow the simulation of actions before the start of
// the given component trace
// hence we shouldn't discard the node
return GlobalVerdict::Pass;
}
},
_ => {}
}
// ***
let local_interaction : Interaction;
{
Expand All @@ -92,12 +80,29 @@ fn perform_local_analysis(gen_ctx : &GeneralContext,
local_mu = AnalysableMultiTrace::new(canals,0);
}
// ***
let mut local_analysis_manager = AnalysisProcessManager::new(gen_ctx.clone(),
let local_analysis_kind : AnalysisKind;
match parent_analysis_kind {
AnalysisKind::Simulate( sim_before ) => {
if *sim_before {
local_analysis_kind = AnalysisKind::Simulate(true);
} else {
local_analysis_kind = AnalysisKind::Prefix;
}
},
_ => {
local_analysis_kind = AnalysisKind::Prefix;
}
}
// ***
let mut new_gen_ctx= gen_ctx.clone();
new_gen_ctx.co_localizations = vec![ gen_ctx.co_localizations.get(canal_id).unwrap().clone() ];
// ***
let mut local_analysis_manager = AnalysisProcessManager::new(new_gen_ctx,
HibouSearchStrategy::DFS,
vec![],
AnalysisPriorities::default(),
vec![],
AnalysisKind::Prefix,
local_analysis_kind,
UseLocalAnalysis::No,
Some(GlobalVerdict::WeakPass)
);
Expand Down
Loading

0 comments on commit 281abe7

Please sign in to comment.