cprover
sharing_treet< derivedt, named_subtreest > Class Template Reference

Base class for tree-like data structures with sharing. More...

#include <irep.h>

+ Inheritance diagram for sharing_treet< derivedt, named_subtreest >:
+ Collaboration diagram for sharing_treet< derivedt, named_subtreest >:

Public Types

using dt = tree_nodet< derivedt, named_subtreest, true >
 
using subt = typename dt::subt
 
using named_subt = typename dt::named_subt
 
using tree_implementationt = sharing_treet
 Used to refer to this class from derived classes. More...
 

Public Member Functions

 sharing_treet (irep_idt _id)
 
 sharing_treet (irep_idt _id, named_subt _named_sub, subt _sub)
 
 sharing_treet ()
 
 sharing_treet (const sharing_treet &irep)
 
 sharing_treet (sharing_treet &&irep)
 
sharing_treetoperator= (const sharing_treet &irep)
 
sharing_treetoperator= (sharing_treet &&irep)
 
 ~sharing_treet ()
 
const dtread () const
 
dtwrite ()
 

Protected Member Functions

void detach ()
 

Static Protected Member Functions

static void remove_ref (dt *old_data)
 
static void nonrecursive_destructor (dt *old_data)
 Does the same as remove_ref, but using an explicit stack instead of recursion. More...
 

Protected Attributes

dtdata
 

Static Protected Attributes

static dt empty_d
 

Detailed Description

template<typename derivedt, typename named_subtreest>
class sharing_treet< derivedt, named_subtreest >

Base class for tree-like data structures with sharing.

Definition at line 178 of file irep.h.

Member Typedef Documentation

◆ dt

template<typename derivedt, typename named_subtreest>
using sharing_treet< derivedt, named_subtreest >::dt = tree_nodet<derivedt, named_subtreest, true>

Definition at line 181 of file irep.h.

◆ named_subt

template<typename derivedt, typename named_subtreest>
using sharing_treet< derivedt, named_subtreest >::named_subt = typename dt::named_subt

Definition at line 183 of file irep.h.

◆ subt

template<typename derivedt, typename named_subtreest>
using sharing_treet< derivedt, named_subtreest >::subt = typename dt::subt

Definition at line 182 of file irep.h.

◆ tree_implementationt

template<typename derivedt, typename named_subtreest>
using sharing_treet< derivedt, named_subtreest >::tree_implementationt = sharing_treet

Used to refer to this class from derived classes.

Definition at line 186 of file irep.h.

Constructor & Destructor Documentation

◆ sharing_treet() [1/5]

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::sharing_treet ( irep_idt  _id)
inlineexplicit

Definition at line 188 of file irep.h.

◆ sharing_treet() [2/5]

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::sharing_treet ( irep_idt  _id,
named_subt  _named_sub,
subt  _sub 
)
inline

Definition at line 192 of file irep.h.

◆ sharing_treet() [3/5]

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::sharing_treet ( )
inline

Definition at line 198 of file irep.h.

◆ sharing_treet() [4/5]

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::sharing_treet ( const sharing_treet< derivedt, named_subtreest > &  irep)
inline

Definition at line 203 of file irep.h.

◆ sharing_treet() [5/5]

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::sharing_treet ( sharing_treet< derivedt, named_subtreest > &&  irep)
inline

Definition at line 218 of file irep.h.

◆ ~sharing_treet()

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::~sharing_treet ( )
inline

Definition at line 256 of file irep.h.

Member Function Documentation

◆ detach()

template<typename derivedt , typename named_subtreest >
void sharing_treet< derivedt, named_subtreest >::detach ( )
protected

Definition at line 539 of file irep.h.

◆ nonrecursive_destructor()

template<typename derivedt , typename named_subtreest >
void sharing_treet< derivedt, named_subtreest >::nonrecursive_destructor ( dt old_data)
staticprotected

Does the same as remove_ref, but using an explicit stack instead of recursion.

Definition at line 612 of file irep.h.

◆ operator=() [1/2]

template<typename derivedt, typename named_subtreest>
sharing_treet& sharing_treet< derivedt, named_subtreest >::operator= ( const sharing_treet< derivedt, named_subtreest > &  irep)
inline

Definition at line 226 of file irep.h.

◆ operator=() [2/2]

template<typename derivedt, typename named_subtreest>
sharing_treet& sharing_treet< derivedt, named_subtreest >::operator= ( sharing_treet< derivedt, named_subtreest > &&  irep)
inline

Definition at line 246 of file irep.h.

◆ read()

template<typename derivedt, typename named_subtreest>
const dt& sharing_treet< derivedt, named_subtreest >::read ( ) const
inline

Definition at line 270 of file irep.h.

◆ remove_ref()

template<typename derivedt , typename named_subtreest >
void sharing_treet< derivedt, named_subtreest >::remove_ref ( dt old_data)
staticprotected

Definition at line 574 of file irep.h.

◆ write()

template<typename derivedt, typename named_subtreest>
dt& sharing_treet< derivedt, named_subtreest >::write ( )
inline

Definition at line 275 of file irep.h.

Member Data Documentation

◆ data

template<typename derivedt, typename named_subtreest>
dt* sharing_treet< derivedt, named_subtreest >::data
protected

Definition at line 262 of file irep.h.

◆ empty_d

template<typename derivedt, typename named_subtreest>
sharing_treet< derivedt, named_subtreest >::dt sharing_treet< derivedt, named_subtreest >::empty_d
staticprotected

Definition at line 263 of file irep.h.


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