CBMC
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
 
bool starts_with (const char *s) const
 equivalent of as_string().starts_with(s) More...
 
bool starts_with (const std::string &prefix) const
 equivalent of as_string().starts_with(s) More...
 
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 is typedef-ed to dstringt in irep.h.

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

Definition at line 37 of file dstring.h.

Constructor & Destructor Documentation

◆ dstringt() [1/6]

dstringt::dstringt ( )
inline

Definition at line 44 of file dstring.h.

◆ dstringt() [2/6]

dstringt::dstringt ( const char *  s)
inline

Definition at line 65 of file dstring.h.

◆ dstringt() [3/6]

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

Definition at line 71 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 82 of file dstring.h.

◆ dstringt() [6/6]

dstringt::dstringt ( unsigned  _no)
inlineexplicitprivate

Definition at line 207 of file dstring.h.

Member Function Documentation

◆ as_string()

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

Definition at line 214 of file dstring.h.

◆ begin()

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

Definition at line 193 of file dstring.h.

◆ c_str()

const char* dstringt::c_str ( ) const
inline

Definition at line 116 of file dstring.h.

◆ clear()

void dstringt::clear ( void  )
inline

Definition at line 159 of file dstring.h.

◆ compare()

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

Definition at line 150 of file dstring.h.

◆ empty()

bool dstringt::empty ( ) const
inline

Definition at line 89 of file dstring.h.

◆ end()

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

Definition at line 198 of file dstring.h.

◆ get_no()

unsigned dstringt::get_no ( ) const
inline

Definition at line 182 of file dstring.h.

◆ hash()

size_t dstringt::hash ( ) const
inline

Definition at line 187 of file dstring.h.

◆ make_from_table_index()

static dstringt dstringt::make_from_table_index ( unsigned  no)
inlinestatic

Definition at line 52 of file dstring.h.

◆ operator!=() [1/3]

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

Definition at line 141 of file dstring.h.

◆ operator!=() [2/3]

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

Definition at line 135 of file dstring.h.

◆ operator!=() [3/3]

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

Definition at line 144 of file dstring.h.

◆ operator<() [1/2]

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

Definition at line 128 of file dstring.h.

◆ operator<() [2/2]

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

Definition at line 145 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 147 of file dstring.h.

◆ operator=() [1/2]

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

Definition at line 165 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 170 of file dstring.h.

◆ operator==() [1/3]

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

Definition at line 140 of file dstring.h.

◆ operator==() [2/3]

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

Definition at line 132 of file dstring.h.

◆ operator==() [3/3]

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

Definition at line 143 of file dstring.h.

◆ operator>()

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

Definition at line 146 of file dstring.h.

◆ operator>=()

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

Definition at line 148 of file dstring.h.

◆ operator[]()

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

Definition at line 110 of file dstring.h.

◆ size()

size_t dstringt::size ( ) const
inline

Definition at line 121 of file dstring.h.

◆ starts_with() [1/2]

bool dstringt::starts_with ( const char *  s) const
inline

equivalent of as_string().starts_with(s)

Definition at line 95 of file dstring.h.

◆ starts_with() [2/2]

bool dstringt::starts_with ( const std::string &  prefix) const
inline

equivalent of as_string().starts_with(s)

Definition at line 105 of file dstring.h.

◆ swap()

void dstringt::swap ( dstringt b)
inline

Definition at line 162 of file dstring.h.

Member Data Documentation

◆ no

unsigned dstringt::no
private

Definition at line 211 of file dstring.h.


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