IDA C++ SDK 9.2
Loading...
Searching...
No Matches
ctry_t Struct Reference

C++ Try statement. More...

#include <hexrays.hpp>

Inheritance diagram for ctry_t:
cblock_t qlist< cinsn_t >

Public Member Functions

bool is_wind () const
 Is C++ wind statement?
bool is_synchronized_block () const
 Is a synchronized block?
 DECLARE_COMPARISONS (ctry_t)
void print (const citem_t *parent, int indent, vc_printer_t &vp) const
Public Member Functions inherited from cblock_t
 DECLARE_COMPARISONS (cblock_t)
bool is_ordinary_flow () const
Public Member Functions inherited from qlist< cinsn_t >
 DEFINE_LIST_ITERATOR (iterator,, friend class const_iterator;) DEFINE_LIST_ITERATOR(const_iterator
 const_iterator (const iterator &x)
 DEFINE_REVERSE_ITERATOR (reverse_iterator, iterator) DEFINE_REVERSE_ITERATOR(const_reverse_iterator
const_iterator qlist (void)
 Constructor.
 qlist (const qlist< cinsn_t > &x)
 Constructor - creates a qlist identical to 'x'.
 qlist (qlist &&x)
 Constructor - moves the data from x
 ~qlist (void)
 Destructor.

Public Attributes

ccatchvec_t catchs
 "catch all" or "finally" if present, must be the last element.
size_t old_state = 0
 old state number (internal, MSVC related)
size_t new_state = 0
 new state number (internal, MSVC related)
int flags = 0
Public Attributes inherited from qlist< cinsn_t >
 const

Additional Inherited Members

Public Types inherited from qlist< cinsn_t >
typedef cinsn_t value_type

Detailed Description

C++ Try statement.

This structure is also used to represent wind statements.

Member Function Documentation

◆ is_wind()

bool ctry_t::is_wind ( ) const
inline

Is C++ wind statement?

(not part of the C++ language) MSVC generates code like the following to keep track of constructed objects and destroy them upon an exception. Example:

// an object is constructed at this point __wind { // some other code that may throw an exception } __unwind { // this code is executed only if there was an exception // in the __wind block. normally here we destroy the object // after that the exception is passed to the // exception handler, regular control flow is interrupted here. } // regular logic continues here, if there were no exceptions // also the object's destructor is called

◆ is_synchronized_block()

bool ctry_t::is_synchronized_block ( ) const
inline

Is a synchronized block?

Such a block matches this pattern: monitor_enter(obj); try { ... } finally { monitor_exit(obj); }

◆ DECLARE_COMPARISONS()

ctry_t::DECLARE_COMPARISONS ( ctry_t )

◆ print()

void ctry_t::print ( const citem_t * parent,
int indent,
vc_printer_t & vp ) const

Member Data Documentation

◆ catchs

ccatchvec_t ctry_t::catchs

"catch all" or "finally" if present, must be the last element.

wind-statements must have "finally" and nothing else.

◆ old_state

size_t ctry_t::old_state = 0

old state number (internal, MSVC related)

◆ new_state

size_t ctry_t::new_state = 0

new state number (internal, MSVC related)

◆ flags

int ctry_t::flags = 0

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