cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
string_container.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Container for C-Strings
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_UTIL_STRING_CONTAINER_H
13
#define CPROVER_UTIL_STRING_CONTAINER_H
14
15
#include "
memory_units.h
"
16
#include "
string_hash.h
"
17
18
#include <list>
19
#include <string_view>
20
#include <unordered_map>
21
#include <vector>
22
23
// NOLINTNEXTLINE(readability/identifiers)
24
class
string_view_hasht
25
{
26
public
:
27
std::size_t
operator()
(std::string_view s)
const
28
{
29
return
hash_string
(s);
30
}
31
};
32
37
struct
string_container_statisticst
38
{
39
std::size_t
string_count
;
40
memory_sizet
strings_memory_usage
;
41
memory_sizet
vector_memory_usage
;
42
memory_sizet
map_memory_usage
;
43
memory_sizet
list_memory_usage
;
44
45
void
dump_on_stream
(std::ostream &out)
const
;
46
};
47
48
class
string_containert
49
{
50
public
:
51
unsigned
operator[]
(std::string_view s)
52
{
53
return
get
(s);
54
}
55
56
// constructor and destructor
57
string_containert
();
58
~string_containert
();
59
60
// the pointer is guaranteed to be stable
61
const
char
*
c_str
(
size_t
no
)
const
62
{
63
return
string_vector
[
no
]->c_str();
64
}
65
66
// the reference is guaranteed to be stable
67
const
std::string &
get_string
(
size_t
no
)
const
68
{
69
return
*
string_vector
[
no
];
70
}
71
72
string_container_statisticst
compute_statistics
()
const
;
73
74
protected
:
75
// The keys are std::string_views into the std::string objects owned by
76
// string_list below; std::list keeps those addresses stable and the interned
77
// strings are never mutated, so the keys remain valid for the lifetime of
78
// the map.
79
// the 'unsigned' ought to be size_t
80
typedef
std::unordered_map<std::string_view, unsigned, string_view_hasht>
81
hash_tablet
;
82
hash_tablet
hash_table
;
83
84
unsigned
get
(std::string_view);
85
86
typedef
std::list<std::string>
string_listt
;
87
string_listt
string_list
;
88
89
typedef
std::vector<std::string *>
string_vectort
;
90
string_vectort
string_vector
;
91
};
92
94
inline
string_containert
&
get_string_container
()
95
{
96
static
string_containert
ret;
97
return
ret;
98
}
99
100
#endif
// CPROVER_UTIL_STRING_CONTAINER_H
widen_modet::no
@ no
Definition
abstract_environment.h:32
memory_sizet
Definition
memory_units.h:16
string_containert
Definition
string_container.h:49
string_containert::hash_tablet
std::unordered_map< std::string_view, unsigned, string_view_hasht > hash_tablet
Definition
string_container.h:81
string_containert::string_vectort
std::vector< std::string * > string_vectort
Definition
string_container.h:89
string_containert::get
unsigned get(std::string_view)
Definition
string_container.cpp:22
string_containert::string_vector
string_vectort string_vector
Definition
string_container.h:90
string_containert::hash_table
hash_tablet hash_table
Definition
string_container.h:82
string_containert::get_string
const std::string & get_string(size_t no) const
Definition
string_container.h:67
string_containert::string_listt
std::list< std::string > string_listt
Definition
string_container.h:86
string_containert::operator[]
unsigned operator[](std::string_view s)
Definition
string_container.h:51
string_containert::string_containert
string_containert()
Definition
irep_ids.cpp:45
string_containert::string_list
string_listt string_list
Definition
string_container.h:87
string_containert::c_str
const char * c_str(size_t no) const
Definition
string_container.h:61
string_containert::~string_containert
~string_containert()
Definition
string_container.cpp:18
string_containert::compute_statistics
string_container_statisticst compute_statistics() const
Definition
string_container.cpp:57
string_view_hasht
Definition
string_container.h:25
string_view_hasht::operator()
std::size_t operator()(std::string_view s) const
Definition
string_container.h:27
hash_string
size_t hash_string(const dstringt &s)
Definition
dstring.h:240
memory_units.h
get_string_container
string_containert & get_string_container()
Get a reference to the global string container.
Definition
string_container.h:94
string_hash.h
string hashing
string_container_statisticst
Has estimated statistics about string container (estimated because this only uses public information,...
Definition
string_container.h:38
string_container_statisticst::vector_memory_usage
memory_sizet vector_memory_usage
Definition
string_container.h:41
string_container_statisticst::string_count
std::size_t string_count
Definition
string_container.h:39
string_container_statisticst::dump_on_stream
void dump_on_stream(std::ostream &out) const
Definition
string_container.cpp:44
string_container_statisticst::strings_memory_usage
memory_sizet strings_memory_usage
Definition
string_container.h:40
string_container_statisticst::list_memory_usage
memory_sizet list_memory_usage
Definition
string_container.h:43
string_container_statisticst::map_memory_usage
memory_sizet map_memory_usage
Definition
string_container.h:42
util
string_container.h
Generated by
1.17.0