cprover
natural_loops_templatet< P, T > Class Template Reference

#include <natural_loops.h>

Inheritance diagram for natural_loops_templatet< P, T >:
[legend]
Collaboration diagram for natural_loops_templatet< P, T >:
[legend]

Public Types

typedef std::set< T > natural_loopt
 
typedef std::map< T, natural_looptloop_mapt
 

Public Member Functions

void operator() (P &program)
 
void output (std::ostream &) const
 Print all natural loops that were found. More...
 
const cfg_dominators_templatet< P, T, false > & get_dominator_info () const
 
 natural_loops_templatet ()
 
 natural_loops_templatet (P &program)
 

Public Attributes

loop_mapt loop_map
 

Protected Types

typedef cfg_dominators_templatet< P, T, false >::cfgt::nodet nodet
 

Protected Member Functions

void compute (P &program)
 Finds all back-edges and computes the natural loops. More...
 
void compute_natural_loop (T, T)
 Computes the natural loop for a given back-edge (see Muchnick section 7.4) More...
 

Protected Attributes

cfg_dominators_templatet< P, T, false > cfg_dominators
 

Detailed Description

template<class P, class T>
class natural_loops_templatet< P, T >

Definition at line 25 of file natural_loops.h.

Member Typedef Documentation

§ loop_mapt

template<class P, class T>
typedef std::map<T, natural_loopt> natural_loops_templatet< P, T >::loop_mapt

Definition at line 31 of file natural_loops.h.

§ natural_loopt

template<class P, class T>
typedef std::set<T> natural_loops_templatet< P, T >::natural_loopt

Definition at line 28 of file natural_loops.h.

§ nodet

template<class P, class T>
typedef cfg_dominators_templatet<P, T, false>::cfgt::nodet natural_loops_templatet< P, T >::nodet
protected

Definition at line 58 of file natural_loops.h.

Constructor & Destructor Documentation

§ natural_loops_templatet() [1/2]

template<class P, class T>
natural_loops_templatet< P, T >::natural_loops_templatet ( )
inline

Definition at line 47 of file natural_loops.h.

§ natural_loops_templatet() [2/2]

template<class P, class T>
natural_loops_templatet< P, T >::natural_loops_templatet ( P &  program)
inlineexplicit

Definition at line 51 of file natural_loops.h.

Member Function Documentation

§ compute()

template<class P, class T >
void natural_loops_templatet< P, T >::compute ( P &  program)
protected

§ compute_natural_loop()

template<class P , class T>
void natural_loops_templatet< P, T >::compute_natural_loop ( m,
n 
)
protected

Computes the natural loop for a given back-edge (see Muchnick section 7.4)

Definition at line 120 of file natural_loops.h.

Referenced by natural_loops_templatet< const goto_programt, goto_programt::const_targett >::compute().

§ get_dominator_info()

template<class P, class T>
const cfg_dominators_templatet<P, T, false>& natural_loops_templatet< P, T >::get_dominator_info ( ) const
inline

§ operator()()

template<class P, class T>
void natural_loops_templatet< P, T >::operator() ( P &  program)
inline

Definition at line 35 of file natural_loops.h.

§ output()

template<class P , class T >
void natural_loops_templatet< P, T >::output ( std::ostream &  out) const

Print all natural loops that were found.

Definition at line 155 of file natural_loops.h.

Referenced by natural_loops_templatet< const goto_programt, goto_programt::const_targett >::operator()(), and show_natural_loops().

Member Data Documentation

§ cfg_dominators

§ loop_map


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