Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Do not use mc_{global_variables,local_variables,variables_type}_{libsimgrid...
[simgrid.git] / src / mc / mc_pair.c
1 /* Copyright (c) 2013. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "mc_private.h"
8
9 mc_pair_t MC_pair_new(){
10   mc_pair_t p = NULL;
11   p = xbt_new0(s_mc_pair_t, 1);
12   p->num = ++mc_stats->expanded_pairs;
13   p->search_cycle = 0;
14   return p;
15 }
16
17 mc_visited_pair_t MC_visited_pair_new(int pair_num, xbt_automaton_state_t automaton_state, xbt_dynar_t atomic_propositions){
18   mc_visited_pair_t pair = NULL;
19   pair = xbt_new0(s_mc_visited_pair_t, 1);
20   pair->graph_state = MC_state_new();
21   pair->graph_state->system_state = MC_take_snapshot(pair_num);
22   pair->heap_bytes_used = mmalloc_get_bytes_used(std_heap);
23   pair->nb_processes = xbt_swag_size(simix_global->process_list);
24   pair->automaton_state = automaton_state;
25   pair->num = pair_num;
26   pair->other_num = -1;
27   pair->acceptance_removed = 0;
28   pair->visited_removed = 0;
29   pair->acceptance_pair = 0;
30   pair->atomic_propositions = xbt_dynar_new(sizeof(int), NULL);
31   unsigned int cursor = 0;
32   int value;
33   xbt_dynar_foreach(atomic_propositions, cursor, value)
34     xbt_dynar_push_as(pair->atomic_propositions, int, value);
35   return pair;
36 }
37
38 void MC_visited_pair_delete(mc_visited_pair_t p){
39   p->automaton_state = NULL;
40   MC_state_delete(p->graph_state);
41   xbt_dynar_free(&(p->atomic_propositions));
42   xbt_free(p);
43   p = NULL;
44 }
45
46 void MC_pair_delete(mc_pair_t p){
47   p->automaton_state = NULL;
48   MC_state_delete(p->graph_state);
49   xbt_dynar_free(&(p->atomic_propositions));
50   xbt_free(p);
51   p = NULL;
52 }
53
54 void mc_pair_free_voidp(void *p){
55   MC_pair_delete((mc_pair_t) * (void **)p);
56 }