cprover
cpp_storage_spec.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@cs.cmu.edu
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_CPP_CPP_STORAGE_SPEC_H
11 #define CPROVER_CPP_CPP_STORAGE_SPEC_H
12 
13 #include <util/source_location.h>
14 
16 {
17 public:
18  cpp_storage_spect():irept(ID_cpp_storage_spec)
19  {
20  }
21 
23  {
24  return static_cast<source_locationt &>(add(ID_C_source_location));
25  }
26 
27  const source_locationt &location() const
28  {
29  return static_cast<const source_locationt &>(find(ID_C_source_location));
30  }
31 
32  bool is_static() const { return get_bool(ID_static); }
33  bool is_extern() const { return get_bool(ID_extern); }
34  bool is_auto() const { return get_bool(ID_auto); }
35  bool is_register() const { return get_bool(ID_register); }
36  bool is_mutable() const { return get_bool(ID_mutable); }
37  bool is_thread_local() const { return get_bool(ID_thread_local); }
38  bool is_asm() const { return get_bool(ID_asm); }
39 
40  void set_static() { set(ID_static, true); }
41  void set_extern() { set(ID_extern, true); }
42  void set_auto() { set(ID_auto, true); }
43  void set_register() { set(ID_register, true); }
44  void set_mutable() { set(ID_mutable, true); }
45  void set_thread_local() { set(ID_thread_local, true); }
46  void set_asm() { set(ID_asm, true); }
47 
48  bool is_empty() const
49  {
50  return !is_static() && !is_extern() && !is_auto() &&
51  !is_register() && !is_mutable() && !is_thread_local() &&
52  !is_asm();
53  }
54 };
55 
56 #endif // CPROVER_CPP_CPP_STORAGE_SPEC_H
cpp_storage_spect
Definition: cpp_storage_spec.h:15
cpp_storage_spect::set_mutable
void set_mutable()
Definition: cpp_storage_spec.h:44
cpp_storage_spect::is_asm
bool is_asm() const
Definition: cpp_storage_spec.h:38
irept::add
irept & add(const irep_namet &name)
Definition: irep.cpp:305
irept::find
const irept & find(const irep_namet &name) const
Definition: irep.cpp:284
cpp_storage_spect::set_extern
void set_extern()
Definition: cpp_storage_spec.h:41
cpp_storage_spect::set_static
void set_static()
Definition: cpp_storage_spec.h:40
cpp_storage_spect::is_extern
bool is_extern() const
Definition: cpp_storage_spec.h:33
cpp_storage_spect::is_empty
bool is_empty() const
Definition: cpp_storage_spec.h:48
cpp_storage_spect::is_static
bool is_static() const
Definition: cpp_storage_spec.h:32
irept::get_bool
bool get_bool(const irep_namet &name) const
Definition: irep.cpp:239
cpp_storage_spect::is_mutable
bool is_mutable() const
Definition: cpp_storage_spec.h:36
cpp_storage_spect::set_register
void set_register()
Definition: cpp_storage_spec.h:43
source_location.h
cpp_storage_spect::cpp_storage_spect
cpp_storage_spect()
Definition: cpp_storage_spec.h:18
cpp_storage_spect::is_auto
bool is_auto() const
Definition: cpp_storage_spec.h:34
cpp_storage_spect::location
source_locationt & location()
Definition: cpp_storage_spec.h:22
cpp_storage_spect::is_register
bool is_register() const
Definition: cpp_storage_spec.h:35
source_locationt
Definition: source_location.h:20
irept::set
void set(const irep_namet &name, const irep_idt &value)
Definition: irep.h:286
cpp_storage_spect::is_thread_local
bool is_thread_local() const
Definition: cpp_storage_spec.h:37
cpp_storage_spect::set_thread_local
void set_thread_local()
Definition: cpp_storage_spec.h:45
irept
Base class for tree-like data structures with sharing.
Definition: irep.h:156
cpp_storage_spect::set_auto
void set_auto()
Definition: cpp_storage_spec.h:42
cpp_storage_spect::set_asm
void set_asm()
Definition: cpp_storage_spec.h:46
cpp_storage_spect::location
const source_locationt & location() const
Definition: cpp_storage_spec.h:27