cprover
unified_diff.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Unified diff (using LCSS) of goto functions
4 
5 Author: Michael Tautschnig
6 
7 Date: April 2016
8 
9 \*******************************************************************/
10 
13 
14 #ifndef CPROVER_GOTO_DIFF_UNIFIED_DIFF_H
15 #define CPROVER_GOTO_DIFF_UNIFIED_DIFF_H
16 
17 #include <iosfwd>
18 #include <list>
19 #include <map>
20 #include <vector>
21 
22 #include <util/namespace.h>
23 
25 
26 class goto_functionst;
27 class goto_modelt;
28 class goto_programt;
29 
31 {
32 public:
33  unified_difft(const goto_modelt &model_old, const goto_modelt &model_new);
34 
35  bool operator()();
36 
37  void output(std::ostream &os) const;
38 
39  enum class differencet
40  {
41  SAME,
42  DELETED,
43  NEW
44  };
45 
46  typedef std::list<std::pair<goto_programt::const_targett, differencet>>
48 
49  goto_program_difft get_diff(const irep_idt &function) const;
50 
55 
56  typedef std::vector<differencet> differencest;
57  typedef std::map<irep_idt, differencest> differences_mapt;
58 
59  void unified_diff(
60  const irep_idt &identifier,
61  const goto_programt &old_goto_program,
62  const goto_programt &new_goto_program);
63 
64  static differencest lcss(
65  const irep_idt &identifier,
66  const goto_programt &old_goto_program,
67  const goto_programt &new_goto_program);
68 
70  const goto_programt &old_goto_program,
71  const goto_programt &new_goto_program,
72  const differencest &differences);
73 
74  void output_diff(
75  const irep_idt &identifier,
76  const goto_programt &old_goto_program,
77  const goto_programt &new_goto_program,
78  const differencest &differences,
79  std::ostream &os) const;
80 
81  static bool instructions_equal(
82  const goto_programt::instructiont &ins1,
83  const goto_programt::instructiont &ins2);
84 
85  const differences_mapt &differences_map() const;
86 
87 private:
89 };
90 
91 #endif // CPROVER_GOTO_DIFF_UNIFIED_DIFF_H
const differences_mapt & differences_map() const
const goto_functionst & old_goto_functions
Definition: unified_diff.h:51
static bool instructions_equal(const goto_programt::instructiont &ins1, const goto_programt::instructiont &ins2)
std::map< irep_idt, differencest > differences_mapt
Definition: unified_diff.h:57
goto_program_difft get_diff(const irep_idt &function) const
This class represents an instruction in the GOTO intermediate representation.
Definition: goto_program.h:173
void output_diff(const irep_idt &identifier, const goto_programt &old_goto_program, const goto_programt &new_goto_program, const differencest &differences, std::ostream &os) const
unified_difft(const goto_modelt &model_old, const goto_modelt &model_new)
std::vector< differencet > differencest
Definition: unified_diff.h:56
TO_BE_DOCUMENTED.
Definition: namespace.h:74
const namespacet ns_old
Definition: unified_diff.h:52
differences_mapt differences_map_
Definition: unified_diff.h:88
A generic container class for the GOTO intermediate representation of one function.
Definition: goto_program.h:70
static differencest lcss(const irep_idt &identifier, const goto_programt &old_goto_program, const goto_programt &new_goto_program)
void output(std::ostream &os) const
void unified_diff(const irep_idt &identifier, const goto_programt &old_goto_program, const goto_programt &new_goto_program)
std::list< std::pair< goto_programt::const_targett, differencet > > goto_program_difft
Definition: unified_diff.h:47
const goto_functionst & new_goto_functions
Definition: unified_diff.h:53
Concrete Goto Program.
const namespacet ns_new
Definition: unified_diff.h:54