X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b487d5a9259b88670b8cd97e9c16e4b000c11008..124b3dee9ed0b4342bc495061c2a5167a9fc6318:/src/mc/mc_liveness.h diff --git a/src/mc/mc_liveness.h b/src/mc/mc_liveness.h index 4454c80e1b..b75d93552b 100644 --- a/src/mc/mc_liveness.h +++ b/src/mc/mc_liveness.h @@ -1,34 +1,49 @@ -/* Copyright (c) 2007-2014. The SimGrid Team. +/* Copyright (c) 2007-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#ifndef MC_LIVENESS_H -#define MC_LIVENESS_H +#ifndef SIMGRID_MC_LIVENESS_H +#define SIMGRID_MC_LIVENESS_H #include #include +#include #include #include #include -#include "mc_state.h" +#include "src/mc/mc_state.h" SG_BEGIN_DECL() -extern xbt_automaton_t _mc_property_automaton; +SG_END_DECL() -typedef struct s_mc_pair{ - int num; - int search_cycle; - mc_state_t graph_state; /* System state included */ - xbt_automaton_state_t automaton_state; - xbt_dynar_t atomic_propositions; - int requests; -} s_mc_pair_t, *mc_pair_t; +namespace simgrid { +namespace mc { -typedef struct s_mc_visited_pair{ +extern XBT_PRIVATE xbt_automaton_t property_automaton; + +struct XBT_PRIVATE Pair { + int num = 0; + int search_cycle = 0; + mc_state_t graph_state = nullptr; /* System state included */ + xbt_automaton_state_t automaton_state = nullptr; + xbt_dynar_t atomic_propositions = nullptr; + int requests = 0; + int depth = 0; + int exploration_started = 0; + int visited_pair_removed = 0; + + Pair(); + ~Pair(); + + Pair(Pair const&) = delete; + Pair& operator=(Pair const&) = delete; +}; + +struct XBT_PRIVATE VisitedPair { int num; int other_num; /* Dot output for */ int acceptance_pair; @@ -39,22 +54,19 @@ typedef struct s_mc_visited_pair{ int nb_processes; int acceptance_removed; int visited_removed; -} s_mc_visited_pair_t, *mc_visited_pair_t; +}; -mc_pair_t MC_pair_new(void); -void MC_pair_delete(mc_pair_t); -void mc_pair_free_voidp(void *p); -mc_visited_pair_t MC_visited_pair_new(int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions); -void MC_visited_pair_delete(mc_visited_pair_t p); +XBT_PRIVATE simgrid::mc::VisitedPair* visited_pair_new(int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions, mc_state_t graph_state); +XBT_PRIVATE void visited_pair_delete(simgrid::mc::VisitedPair* p); -void MC_pre_modelcheck_liveness(void); -void MC_modelcheck_liveness(void); -void MC_show_stack_liveness(xbt_fifo_t stack); -void MC_dump_stack_liveness(xbt_fifo_t stack); +int modelcheck_liveness(void); +XBT_PRIVATE void show_stack_liveness(xbt_fifo_t stack); +XBT_PRIVATE void dump_stack_liveness(xbt_fifo_t stack); -extern xbt_dynar_t visited_pairs; -int is_visited_pair(mc_visited_pair_t pair, int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions); +XBT_PRIVATE extern xbt_dynar_t visited_pairs; +XBT_PRIVATE int is_visited_pair(simgrid::mc::VisitedPair* visited_pair, simgrid::mc::Pair* pair); -SG_END_DECL() +} +} #endif