cprover
dstringt Class Referencefinal

dstringt has one field, an unsigned integer no which is an index into a static table of strings. More...

#include <dstring.h>

Public Member Functions

 dstringt ()
 
 dstringt (const char *s)
 
 dstringt (const std::string &s)
 
 dstringt (const dstringt &)=default
 
 dstringt (dstringt &&other)
 Move constructor. More...
 
bool empty () const
 
char operator[] (size_t i) const
 
const char * c_str () const
 
size_t size () const
 
bool operator< (const dstringt &b) const
 
bool operator== (const dstringt &b) const
 
bool operator!= (const dstringt &b) const
 
bool operator== (const char *b) const
 
bool operator!= (const char *b) const
 
bool operator== (const std::string &b) const
 
bool operator!= (const std::string &b) const
 
bool operator< (const std::string &b) const
 
bool operator> (const std::string &b) const
 
bool operator<= (const std::string &b) const
 
bool operator>= (const std::string &b) const
 
int compare (const dstringt &b) const
 
void clear ()
 
void swap (dstringt &b)
 
dstringtoperator= (const dstringt &b)
 
dstringtoperator= (dstringt &&other)
 Move assignment. More...
 
std::ostream & operator<< (std::ostream &out) const
 
unsigned get_no () const
 
size_t hash () const
 
std::string::const_iterator begin () const
 
std::string::const_iterator end () const
 

Static Public Member Functions

static dstringt make_from_table_index (unsigned no)
 

Private Member Functions

 dstringt (unsigned _no)
 
const std::string & as_string () const
 

Private Attributes

unsigned no
 

Detailed Description

dstringt has one field, an unsigned integer no which is an index into a static table of strings.

This makes it expensive to create a new string(because you have to look through the whole table to see if it is already there, and add it if it isn't) but very cheap to compare strings (just compare the two integers). It also means that when you have lots of copies of the same string you only have to store the whole string once, which saves space.

irep_idt and irep_namet are typedef-ed to dstringt in irep.h unless USE_STD_STRING is set.

Note: Marked final to disable inheritance. No virtual destructor, so runtime-polymorphic use would be unsafe.

Definition at line 36 of file dstring.h.

Constructor & Destructor Documentation

◆ dstringt() [1/6]

dstringt::dstringt ( )
inline

Definition at line 43 of file dstring.h.

◆ dstringt() [2/6]

dstringt::dstringt ( const char *  s)
inline

Definition at line 64 of file dstring.h.

◆ dstringt() [3/6]

dstringt::dstringt ( const std::string &  s)
inline

Definition at line 70 of file dstring.h.

◆ dstringt() [4/6]

dstringt::dstringt ( const dstringt )
default

◆ dstringt() [5/6]

dstringt::dstringt ( dstringt &&  other)
inline

Move constructor.

There is no need and no point in actually destroying the source object other, this is effectively just a copy constructor.

Definition at line 81 of file dstring.h.

◆ dstringt() [6/6]

dstringt::dstringt ( unsigned  _no)
inlineexplicitprivate

Definition at line 190 of file dstring.h.

Member Function Documentation

◆ as_string()

const std::string& dstringt::as_string ( ) const
inlineprivate

Definition at line 197 of file dstring.h.

◆ begin()

std::string::const_iterator dstringt::begin ( ) const
inline

Definition at line 176 of file dstring.h.

◆ c_str()

const char* dstringt::c_str ( ) const
inline

Definition at line 99 of file dstring.h.

◆ clear()

void dstringt::clear ( void  )
inline

Definition at line 142 of file dstring.h.

◆ compare()

int dstringt::compare ( const dstringt b) const
inline

Definition at line 133 of file dstring.h.

◆ empty()

bool dstringt::empty ( ) const
inline

Definition at line 88 of file dstring.h.

◆ end()

std::string::const_iterator dstringt::end ( ) const
inline

Definition at line 181 of file dstring.h.

◆ get_no()

unsigned dstringt::get_no ( ) const
inline

Definition at line 165 of file dstring.h.

◆ hash()

size_t dstringt::hash ( ) const
inline

Definition at line 170 of file dstring.h.

◆ make_from_table_index()

static dstringt dstringt::make_from_table_index ( unsigned  no)
inlinestatic

Definition at line 51 of file dstring.h.

◆ operator!=() [1/3]

bool dstringt::operator!= ( const dstringt b) const
inline

Definition at line 118 of file dstring.h.

◆ operator!=() [2/3]

bool dstringt::operator!= ( const char *  b) const
inline

Definition at line 124 of file dstring.h.

◆ operator!=() [3/3]

bool dstringt::operator!= ( const std::string &  b) const
inline

Definition at line 127 of file dstring.h.

◆ operator<() [1/2]

bool dstringt::operator< ( const dstringt b) const
inline

Definition at line 111 of file dstring.h.

◆ operator<() [2/2]

bool dstringt::operator< ( const std::string &  b) const
inline

Definition at line 128 of file dstring.h.

◆ operator<<()

std::ostream & dstringt::operator<< ( std::ostream &  out) const

Definition at line 16 of file dstring.cpp.

◆ operator<=()

bool dstringt::operator<= ( const std::string &  b) const
inline

Definition at line 130 of file dstring.h.

◆ operator=() [1/2]

dstringt& dstringt::operator= ( const dstringt b)
inline

Definition at line 148 of file dstring.h.

◆ operator=() [2/2]

dstringt& dstringt::operator= ( dstringt &&  other)
inline

Move assignment.

There is no need and no point in actually destroying the source object other, this is effectively just an assignment.

Definition at line 153 of file dstring.h.

◆ operator==() [1/3]

bool dstringt::operator== ( const dstringt b) const
inline

Definition at line 115 of file dstring.h.

◆ operator==() [2/3]

bool dstringt::operator== ( const char *  b) const
inline

Definition at line 123 of file dstring.h.

◆ operator==() [3/3]

bool dstringt::operator== ( const std::string &  b) const
inline

Definition at line 126 of file dstring.h.

◆ operator>()

bool dstringt::operator> ( const std::string &  b) const
inline

Definition at line 129 of file dstring.h.

◆ operator>=()

bool dstringt::operator>= ( const std::string &  b) const
inline

Definition at line 131 of file dstring.h.

◆ operator[]()

char dstringt::operator[] ( size_t  i) const
inline

Definition at line 93 of file dstring.h.

◆ size()

size_t dstringt::size ( ) const
inline

Definition at line 104 of file dstring.h.

◆ swap()

void dstringt::swap ( dstringt b)
inline

Definition at line 145 of file dstring.h.

Member Data Documentation

◆ no

unsigned dstringt::no
private

Definition at line 194 of file dstring.h.


The documentation for this class was generated from the following files: