cprover
source_location.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_UTIL_SOURCE_LOCATION_H
11 #define CPROVER_UTIL_SOURCE_LOCATION_H
12 
13 #include "irep.h"
14 #include "prefix.h"
15 
16 class source_locationt:public irept
17 {
18 public:
20  {
21  }
22 
23  std::string as_string() const
24  {
25  return as_string(false);
26  }
27 
28  std::string as_string_with_cwd() const
29  {
30  return as_string(true);
31  }
32 
33  const irep_idt &get_file() const
34  {
35  return get(ID_file);
36  }
37 
39  {
40  return get(ID_working_directory);
41  }
42 
43  const irep_idt &get_line() const
44  {
45  return get(ID_line);
46  }
47 
48  const irep_idt &get_column() const
49  {
50  return get(ID_column);
51  }
52 
53  const irep_idt &get_function() const
54  {
55  return get(ID_function);
56  }
57 
58  const irep_idt &get_property_id() const
59  {
60  return get(ID_property_id);
61  }
62 
64  {
65  return get(ID_property_class);
66  }
67 
68  const irep_idt &get_comment() const
69  {
70  return get(ID_comment);
71  }
72 
73  const irep_idt &get_case_number() const
74  {
75  return get(ID_switch_case_number);
76  }
77 
79  {
80  return get(ID_java_bytecode_index);
81  }
82 
84  {
85  return get(ID_basic_block_covered_lines);
86  }
87 
88  void set_file(const irep_idt &file)
89  {
90  set(ID_file, file);
91  }
92 
94  {
95  set(ID_working_directory, cwd);
96  }
97 
98  void set_line(const irep_idt &line)
99  {
100  set(ID_line, line);
101  }
102 
103  void set_line(unsigned line)
104  {
105  set(ID_line, line);
106  }
107 
108  void set_column(const irep_idt &column)
109  {
110  set(ID_column, column);
111  }
112 
113  void set_column(unsigned column)
114  {
115  set(ID_column, column);
116  }
117 
118  void set_function(const irep_idt &function)
119  {
120  set(ID_function, function);
121  }
122 
123  void set_property_id(const irep_idt &property_id)
124  {
125  set(ID_property_id, property_id);
126  }
127 
128  void set_property_class(const irep_idt &property_class)
129  {
130  set(ID_property_class, property_class);
131  }
132 
134  {
135  set(ID_comment, comment);
136  }
137 
138  // for switch case number
139  void set_case_number(const irep_idt &number)
140  {
141  set(ID_switch_case_number, number);
142  }
143 
145  {
146  set(ID_java_bytecode_index, index);
147  }
148 
149  void set_basic_block_covered_lines(const irep_idt &covered_lines)
150  {
151  return set(ID_basic_block_covered_lines, covered_lines);
152  }
153 
154  void set_hide()
155  {
156  set(ID_hide, true);
157  }
158 
159  bool get_hide() const
160  {
161  return get_bool(ID_hide);
162  }
163 
164  static bool is_built_in(const std::string &s)
165  {
166  std::string built_in1="<built-in-"; // "<built-in-additions>";
167  std::string built_in2="<builtin-"; // "<builtin-architecture-strings>";
168  return has_prefix(s, built_in1) || has_prefix(s, built_in2);
169  }
170 
171  bool is_built_in() const
172  {
173  return is_built_in(id2string(get_file()));
174  }
175 
178  void merge(const source_locationt &from);
179 
180  static const source_locationt &nil()
181  {
182  return static_cast<const source_locationt &>(get_nil_irep());
183  }
184 
185 protected:
186  std::string as_string(bool print_cwd) const;
187 };
188 
189 std::ostream &operator <<(std::ostream &, const source_locationt &);
190 
191 #endif // CPROVER_UTIL_SOURCE_LOCATION_H
const irept & get_nil_irep()
Definition: irep.cpp:56
const irep_idt & get_working_directory() const
void set_function(const irep_idt &function)
void set_case_number(const irep_idt &number)
const std::string & id2string(const irep_idt &d)
Definition: irep.h:44
void set_java_bytecode_index(const irep_idt &index)
void set_property_class(const irep_idt &property_class)
static bool is_built_in(const std::string &s)
static const source_locationt & nil()
std::string comment(const rw_set_baset::entryt &entry, bool write)
Definition: race_check.cpp:107
void set_comment(const irep_idt &comment)
const irep_idt & get_function() const
bool is_built_in() const
std::string as_string() const
bool get_bool(const irep_namet &name) const
Definition: irep.cpp:240
void set_line(unsigned line)
const irep_idt & get_column() const
void set_property_id(const irep_idt &property_id)
void set_working_directory(const irep_idt &cwd)
const irep_idt & get_case_number() const
void merge(const source_locationt &from)
Set all unset source-location fields in this object to their values in &#39;from&#39;.
const irep_idt & get_line() const
void set_file(const irep_idt &file)
void set_line(const irep_idt &line)
const irep_idt & get_basic_block_covered_lines() const
void set_column(const irep_idt &column)
bool has_prefix(const std::string &s, const std::string &prefix)
Definition: converter.cpp:13
Base class for tree-like data structures with sharing.
Definition: irep.h:156
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
Definition: dstring.h:33
bool get_hide() const
const irep_idt & get_file() const
std::string as_string_with_cwd() const
void set_column(unsigned column)
const irep_idt & get_java_bytecode_index() const
const irep_idt & get_comment() const
const irep_idt & get_property_id() const
const irep_idt & get_property_class() const
std::ostream & operator<<(std::ostream &, const source_locationt &)
void set_basic_block_covered_lines(const irep_idt &covered_lines)
Definition: kdev_t.h:19