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 
74  {
75  return get(ID_java_bytecode_index);
76  }
77 
78  void set_file(const irep_idt &file)
79  {
80  set(ID_file, file);
81  }
82 
84  {
85  set(ID_working_directory, cwd);
86  }
87 
88  void set_line(const irep_idt &line)
89  {
90  set(ID_line, line);
91  }
92 
93  void set_line(unsigned line)
94  {
95  set(ID_line, line);
96  }
97 
98  void set_column(const irep_idt &column)
99  {
100  set(ID_column, column);
101  }
102 
103  void set_column(unsigned column)
104  {
105  set(ID_column, column);
106  }
107 
108  void set_function(const irep_idt &function)
109  {
110  set(ID_function, function);
111  }
112 
113  void set_property_id(const irep_idt &property_id)
114  {
115  set(ID_property_id, property_id);
116  }
117 
118  void set_property_class(const irep_idt &property_class)
119  {
120  set(ID_property_class, property_class);
121  }
122 
124  {
125  set(ID_comment, comment);
126  }
127 
129  {
130  set(ID_java_bytecode_index, index);
131  }
132 
133  void set_hide()
134  {
135  set(ID_hide, true);
136  }
137 
138  bool get_hide() const
139  {
140  return get_bool(ID_hide);
141  }
142 
143  static bool is_built_in(const std::string &s)
144  {
145  std::string built_in1="<built-in-"; // "<built-in-additions>";
146  std::string built_in2="<builtin-"; // "<builtin-architecture-strings>";
147  return has_prefix(s, built_in1) || has_prefix(s, built_in2);
148  }
149 
150  bool is_built_in() const
151  {
152  return is_built_in(id2string(get_file()));
153  }
154 
155  static const source_locationt &nil()
156  {
157  return static_cast<const source_locationt &>(get_nil_irep());
158  }
159 
160 protected:
161  std::string as_string(bool print_cwd) const;
162 };
163 
164 std::ostream &operator <<(std::ostream &, const source_locationt &);
165 
166 #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)
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:115
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_line() const
void set_file(const irep_idt &file)
void set_line(const irep_idt &line)
void set_column(const irep_idt &column)
Base class for tree-like data structures with sharing.
Definition: irep.h:87
bool get_hide() const
bool has_prefix(const std::string &s, const std::string &prefix)
Definition: converter.cpp:13
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 &)
Definition: kdev_t.h:19