lestes::lang::cplus::sem::ss_destructor_tables_stack Class Reference

#include <ss_ss2pi_base.g.hh>

Inheritance diagram for lestes::lang::cplus::sem::ss_destructor_tables_stack:

lestes::lang::cplus::sem::ss_destructor_tables lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

virtual ptr< ss_destructor_tableopen_compound_stmt (ptr< ss_compound_stmt >)
virtual ptr< ss_destructor_tableclose_compound_stmt ()
virtual void destructor_add (ptr< ss_type >, ptr< ::lestes::backend_v2::intercode::pi_mem_factory >)
virtual void destructor_add_to_destr (ptr< ss_destructor_table >, ptr< ss_type >, ptr< ::lestes::backend_v2::intercode::pi_mem_factory >)
virtual void back_roll_from_current_compound_stmt ()
virtual void back_roll_to_compound_stmt (ptr< ss_compound_stmt >, bool, ptr< ::lestes::backend_v2::intercode::pi_sp > psp, ptr< ::lestes::backend_v2::intercode::pi_sp > nsp)
 Abnormal end of compound statement;psp,nsp shall be taken from current statement(e.g. break, continue, goto).
virtual void back_roll_from_function (ptr< ::lestes::backend_v2::intercode::pi_sp > psp, ptr< ::lestes::backend_v2::intercode::pi_sp > nsp)
 Abnormal end of compound statement; psp,nsp shall be taken from current return statement.
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< ss_destructor_tablecurrent_get ()
 The method current_get returns the value of the field ss_destructor_tables_stack::current.
static void current_set (const ptr< ss_destructor_table > &)
 The method current_set sets the field ss_destructor_tables_stack::current to the given value.
static ptr< ::lestes::std::list<
srp< ss_destructor_table > > > 
tables_get ()
 The method tables_get returns the value of the field ss_destructor_tables_stack::tables.
static void tables_set (const ptr< ::lestes::std::list< srp< ss_destructor_table > > > &)
 The method tables_set sets the field ss_destructor_tables_stack::tables to the given value.
static ptr< ss_destructor_tables_stackcreate ()
 First generated factory method for class ss_destructor_tables_stack.

Protected Member Functions

 ss_destructor_tables_stack ()
 Generated constructor for class ss_destructor_tables_stack.
virtual void gc_mark ()
 Marking routine for class ss_destructor_tables_stack.

Static Private Attributes

static ptr< ss_destructor_tablecurrent = NULL
 Current destructor table.
static ptr< ::lestes::std::list<
srp< ss_destructor_table > > > 
tables = ::lestes::std::list< srp< ss_destructor_table > > ::create()
 Destructor table for each compound statement.
static ptr< reflection_listreflection = reflection

Detailed Description

Definition at line 779 of file ss_ss2pi_base.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_destructor_tables_stack::ss_destructor_tables_stack (  )  [protected]

Generated constructor for class ss_destructor_tables_stack.

Generated constructor for class ss_destructor_tables_stack.

Author:
lsg

Definition at line 941 of file ss_ss2pi_base.g.cc.

Referenced by create().

00942         : ss_destructor_tables()
00943 {}


Member Function Documentation

ptr< ss_destructor_table > lestes::lang::cplus::sem::ss_destructor_tables_stack::current_get (  )  [static]

The method current_get returns the value of the field ss_destructor_tables_stack::current.

Returns:
The value of ss_destructor_tables_stack::current.
Author:
lsg

Definition at line 896 of file ss_ss2pi_base.g.cc.

References current.

00897 {
00898         return current;
00899 }

void lestes::lang::cplus::sem::ss_destructor_tables_stack::current_set ( const ptr< ss_destructor_table > &  x  )  [static]

The method current_set sets the field ss_destructor_tables_stack::current to the given value.

Parameters:
[in] x The new value to set ss_destructor_tables_stack::current to.
Author:
lsg

Definition at line 905 of file ss_ss2pi_base.g.cc.

References current.

00906 {
00907         ss_destructor_tables_stack::current = x;
00908 }

ptr<::lestes::std::list< srp< ss_destructor_table > > > lestes::lang::cplus::sem::ss_destructor_tables_stack::tables_get (  )  [static]

The method tables_get returns the value of the field ss_destructor_tables_stack::tables.

Returns:
The value of ss_destructor_tables_stack::tables.
Author:
lsg

Definition at line 914 of file ss_ss2pi_base.g.cc.

References tables.

00915 {
00916         return tables;
00917 }

void lestes::lang::cplus::sem::ss_destructor_tables_stack::tables_set ( const ptr< ::lestes::std::list< srp< ss_destructor_table > > > &  x  )  [static]

The method tables_set sets the field ss_destructor_tables_stack::tables to the given value.

Parameters:
[in] x The new value to set ss_destructor_tables_stack::tables to.
Author:
lsg

Definition at line 923 of file ss_ss2pi_base.g.cc.

References tables.

00924 {
00925         ss_destructor_tables_stack::tables = x;
00926 }

ptr< ss_destructor_table > lestes::lang::cplus::sem::ss_destructor_tables_stack::open_compound_stmt ( ptr< ss_compound_stmt x  )  [virtual]

Open new destructor table for newly entered compound statement and insert it into destructor_tables structure.

Implements lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 1740 of file ss_ss2pi_base.cc.

References lestes::lang::cplus::sem::ss_destructor_table::create(), current, lestes::msg::eolog, plog, and tables.

01740                                                                                                   {
01741         ptr< ss_destructor_table > tmp = ss_destructor_table::create(x);
01742         plog(dtl) << "Opening Scope Table " << tmp->uid_get()<<"\n" << eolog;
01743         
01744         tables->push_back(tmp);
01745         current = tmp;
01746         return tmp;
01747 }

ptr< ss_destructor_table > lestes::lang::cplus::sem::ss_destructor_tables_stack::close_compound_stmt (  )  [virtual]

Close destructor table of compound statement and return table for now.

Implements lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 1752 of file ss_ss2pi_base.cc.

References current, lestes::msg::eolog, lassert2, plog, and tables.

01752                                                                           {
01753 
01754         lassert2(!tables->empty(),"There is no destructor table left to be removed.");
01755         plog(dtl) << "Closing Scope Table " << tables->back()->uid_get()<<"\n" << eolog;
01756 
01757         tables->pop_back();
01758         current = tables->back();
01759         if (tables->empty()) return NULL;               //occurs in a case of closing global compound statement
01760         return tables->back();
01761 }

void lestes::lang::cplus::sem::ss_destructor_tables_stack::destructor_add ( ptr< ss_type type,
ptr< ::lestes::backend_v2::intercode::pi_mem_factory var 
) [virtual]

Find and record destructor for ss type, which destructs appropriate memory placeholder. Such a record will be added to current destructor table.

Implements lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 1776 of file ss_ss2pi_base.cc.

References current, and destructor_add_to_destr().

Referenced by destructor_add_to_destr().

01776                                                                                                                         {
01777 
01778         destructor_add_to_destr (current, type , var );
01779 }

void lestes::lang::cplus::sem::ss_destructor_tables_stack::destructor_add_to_destr ( ptr< ss_destructor_table destr,
ptr< ss_type type,
ptr< ::lestes::backend_v2::intercode::pi_mem_factory var 
) [virtual]

Find and record destructor for ss type, which destructs appropriate memory placeholder. Such a record will be added to a given destructor table.

Implements lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 1767 of file ss_ss2pi_base.cc.

References lestes::lang::cplus::sem::ss_type2destructor::create(), and destructor_add().

Referenced by destructor_add().

01767                                                                                                                                                                   {
01768 
01769         destr -> destructor_add ( ss_type2destructor::create()->find_destructor(type) , var );
01770 }

void lestes::lang::cplus::sem::ss_destructor_tables_stack::back_roll_from_current_compound_stmt (  )  [virtual]

Normal end of compound statement. back_roll_table shall be called. Also appropriate sequence points have to be tranformed into pseudoinstruction sequence points. (this transformation has to be done before new nested pi-sp will be added.

Implements lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 1823 of file ss_ss2pi_base.cc.

References current, plog, and lestes::lang::cplus::sem::ss_sp2pi_sp().

01823                                                                      {
01824 plog(dtl) << "From current compound";
01825         current->back_roll_table(
01826                         ss_sp2pi_sp(current->compound_stmt_get()->destructor_sp_get()),
01827                         ss_sp2pi_sp(current->compound_stmt_get()->nsp_get())
01828                         );
01829 }

virtual void lestes::lang::cplus::sem::ss_destructor_tables_stack::back_roll_to_compound_stmt ( ptr< ss_compound_stmt ,
bool  ,
ptr< ::lestes::backend_v2::intercode::pi_sp psp,
ptr< ::lestes::backend_v2::intercode::pi_sp nsp 
) [virtual]

Abnormal end of compound statement;psp,nsp shall be taken from current statement(e.g. break, continue, goto).

Implements lestes::lang::cplus::sem::ss_destructor_tables.

virtual void lestes::lang::cplus::sem::ss_destructor_tables_stack::back_roll_from_function ( ptr< ::lestes::backend_v2::intercode::pi_sp psp,
ptr< ::lestes::backend_v2::intercode::pi_sp nsp 
) [virtual]

Abnormal end of compound statement; psp,nsp shall be taken from current return statement.

Implements lestes::lang::cplus::sem::ss_destructor_tables.

ptr< ss_destructor_tables_stack > lestes::lang::cplus::sem::ss_destructor_tables_stack::create ( void   )  [static]

First generated factory method for class ss_destructor_tables_stack.

This factory method for class ss_destructor_tables_stack takes values of all fields as arguments.

Author:
lsg

Definition at line 932 of file ss_ss2pi_base.g.cc.

References ss_destructor_tables_stack().

Referenced by lestes::lang::cplus::sem::ss_destructor_tables::instance().

00933 {
00934         return ptr< ss_destructor_tables_stack > ( new ss_destructor_tables_stack() );
00935 }

ptr< object::reflection_list > lestes::lang::cplus::sem::ss_destructor_tables_stack::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 945 of file ss_ss2pi_base.g.cc.

References lestes::std::list< T >::create(), reflection, and lestes::lang::cplus::sem::ss_destructor_tables::reflection_get().

00946 {
00947         if (!reflection) {
00948                 typedef class_reflection::field_metadata md;
00949                 typedef class_reflection::field_metadata_list mdlist;
00950                 ptr<mdlist> mdl = mdlist::create();
00951                 mdl->push_back( md::create( "current", "ss_destructor_table" ) );
00952                 mdl->push_back( md::create( "tables", "list&lt; srp&lt; ss_destructor_table &gt; &gt;" ) );
00953                 reflection = reflection_list::create( ss_destructor_tables::reflection_get() );
00954                 reflection->push_back( class_reflection::create( "ss_destructor_tables_stack", mdl ) );
00955         }
00956         return reflection;
00957 }

ptr< object::field_list_list > lestes::lang::cplus::sem::ss_destructor_tables_stack::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 959 of file ss_ss2pi_base.g.cc.

References lestes::std::list< T >::create(), and lestes::lang::cplus::sem::ss_destructor_tables::field_values_get().

00960 {
00961         ptr < field_list_list > result = ss_destructor_tables::field_values_get();
00962         result->push_back( value_list::create() );
00963         result->back()->push_back( this->current );
00964         result->push_back( value_list::create() );
00965         result->back()->push_back( this->tables );
00966         return result;
00967 }

void lestes::lang::cplus::sem::ss_destructor_tables_stack::gc_mark ( void   )  [protected, virtual]

Marking routine for class ss_destructor_tables_stack.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 974 of file ss_ss2pi_base.g.cc.

References lestes::lang::cplus::sem::ss_destructor_tables::gc_mark().

00975 {
00976         ss_destructor_tables::gc_mark();
00977 }


Member Data Documentation

ptr< ss_destructor_table > lestes::lang::cplus::sem::ss_destructor_tables_stack::current = NULL [static, private]

Current destructor table.

Definition at line 829 of file ss_ss2pi_base.g.hh.

Referenced by back_roll_from_current_compound_stmt(), close_compound_stmt(), current_get(), current_set(), destructor_add(), and open_compound_stmt().

ptr<::lestes::std::list< srp< ss_destructor_table > > > lestes::lang::cplus::sem::ss_destructor_tables_stack::tables = ::lestes::std::list< srp< ss_destructor_table > > ::create() [static, private]

Destructor table for each compound statement.

Definition at line 831 of file ss_ss2pi_base.g.hh.

Referenced by close_compound_stmt(), open_compound_stmt(), tables_get(), and tables_set().

ptr< object::reflection_list > lestes::lang::cplus::sem::ss_destructor_tables_stack::reflection = reflection [static, private]

Reimplemented from lestes::lang::cplus::sem::ss_destructor_tables.

Definition at line 832 of file ss_ss2pi_base.g.hh.

Referenced by reflection_get().


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:25:26 2007 for lestes by doxygen 1.5.1-20070107